前端面試 數組的相關屬性整理

  1. Array.length:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/length數組

length 是 Array 的實例屬性, 返回或設置一個數組中的元素個數。該值是一個無符號 32-bit 整數。而且老是大於數組最高項 的下標緩存

  1. length 屬性值是一個 0 - 2^32 -1 的 整數
  2. 你能夠設置length 屬性來截斷 任何的數組
  3. Array.prototype 屬性表示 Array 構造函數的原型, 並容許您向全部的 Array 對象添加新的屬性和方法 Array的 實例繼承自 Array.prototype . 與全部的構造函數同樣,你能夠去更改構造函數的原型對象,以及對全部的 Array 實例進行更改 不爲人知的事實: **Array.prototype 自己也是一個 Array **

**屬性值: ** Array.prototype.constructor : 全部的數組實例都繼承了這個屬性, 它的值就是 Array. 代表了全部的數組都是由 Array 構造出來的 Array.prototype.length 由於 Array.prototype 也是個數組,因此它也有 length 屬性, 這個值爲0 由於它 是一個空數組函數

會改變自身方法:測試

  1. Array.prototype.copyWithin() 在數組內部, 將一段元素序列拷貝到另外一段元素序列上, 覆蓋原有的值
  2. Array.prototype.fill() 在數組中 指定區間的全部元素的值, 都替換成某個固定的值
  3. Array.prototype.pop() 刪除數組的最後一個元素,並返回這個元素
  4. Array.prototype.push() 在數組的末尾增長一個或多個元素, 並返回數組的新長度
  5. Array.prototype.reverse() 顛倒數組中元素的排列順序, 即原先的第一個變成最後一個,最早的最後一個變成第一個
  6. Array.prototype.shfit() 刪除數組中的第一個元素,並返回這個元素
  7. Array.prototype.sort() 對數組元素進行排序,並返回當前的數組
  8. Array.prototype.splice() 在任意位置給數組添加或者刪除人一個元素
  9. Array.prototype.unshfit() 在數組的開頭增長一個或者多個元素, 並返回數組的新長度

不會改變自身的方法: 下面這些方法絕對不會改變調用他們的對象的值, 只會返回一個新的數組或者返回一個其餘的指望值prototype

  1. Array.prototype.concat() 返回一個由當前數組和其餘若干數組個非數組值組合而成的新數組
  2. Array.prototype.includes() (實驗性的API) 判斷當前數組是否包含某個指定的值,若是是返回true, 不然返回 false
  3. Array.prototype.join() 鏈接全部的數組元素組成一個字符串
  4. Array.prototype.slice() 抽取當前數組中的一段元素組合成一個新數組
  5. Array.prototype.toString() 返回一個由全部數組元素組合而成的字符串,遮蔽原型鏈上的 Object.prototype.toString() 方法
  6. Array.prototype.indexOf() 返回數組中第一個與指定值相等的元素的索引,若是找不到這樣的元素,則返回 -1
  7. Array.prototype.lastIndexOf() 返回數組中個最後一個(從右邊數第一個) 與指定值相等的元素的索引, 若是找不到這樣的元素,則返回 -1

遍歷方法: 在下面的衆多遍歷方法中,有不少方法都須要指定一個回調函數做爲參數。在每個數組元素都分別執行完回調函數以前,數組的length屬性會被緩存在某個地方,因此,若是你在回調函數中爲當前數組添加了新的元素,那麼那些新添加的元素是不會被遍歷到的。此外,若是在回調函數中對當前數組進行了其它修改,好比改變某個元素的值或者刪掉某個元素,那麼隨後的遍歷操做可能會受到未預期的影響。總之,不要嘗試在遍歷過程當中對原數組進行任何修改,雖然規範對這樣的操做進行了詳細的定義,但爲了可讀性和可維護性,請不要這樣作。設計

  1. Array.prototype.forEach() 爲樹組中的每個元素執行一次回調函數
  2. Array.prototype.every() 若是數組中的每個元素都知足測試函數,則返回 true, 不然返回 false
  3. Array.prototype.some() 若是數組中的至少有一個元素知足測試函數, 則返回 true, 不然返回 false
  4. Array.prototype.filter() 將全部在過濾中返回 true 的數組元素放進一個新數組中並返回
  5. Array.prototype.find() 找到第一個知足測試函數的元素並返回那個元素的值, 若是找不到,則返回 undefined
  6. Array.prototype.map() 返回一個由 回調函數的返回值組成的新數組
  7. Array.prototypereduce() 從左到右爲每個數組執行yci回調函數, 並把上次回調函數的返回值放在一個暫存器中傳給下次的回調函數, 並返回最後一個回調函數的返回值
  8. Array.prototype.reduceRight() 從右到左爲每個數組元素執行一次回調函數, 並把上一次回調函數的返回值放在一個暫存器中創給下次的回調函數, 並返回最後一次回調函數的返回值

通用方法: 在 JavaScript 中,不少的數組方法被故意設計成是通用的。也就是說,那些看起來像是數組的對象(類數組對象),即擁有一個 length 屬性,以及對應的索引屬性(也就是數字類型的屬性,好比 obj[5])的非數組對象也是能夠調用那些數組方法的。其中一些數組方法,好比說 join 方法,它們只會單純的讀取當前對象的 length 屬性和索性屬性的值,並不會嘗試去改變這些屬性的值。而另一些數組方法,好比說 reverse 方法,它們會嘗試修改那些屬性的值,所以,若是當前對象是個 String 對象,那麼這些方法在執行時就會報錯,由於字符串對象的 length 屬性和索引屬性都是隻讀的。對象

相關文章
相關標籤/搜索