JavaScript 數組方法梳理

1. 會改變自身的方法

array.copyWithin(target, start [, end = this.length])

  • target(必需):從該位置開始替換數據。如果爲負值,表示倒數。
  • start(可選):從該位置開始讀取數據,默認爲 0。如果爲負值,表示倒數。
  • end(可選):到該位置前停止讀取數據,默認等於數組長度。如果爲負值,表示倒數。
    就是從target開始替換,替換的數據來自於本身,並從start開始讀取,end結束讀取,將讀取的數據覆蓋從targt開始,有幾個換幾個
 [1, 2, 3, 4, 5, 6].copyWithin(4, 0, 1);
 // 從5開始替換,讀取到的數據爲1,那麼只將5替換成1 輸出  [1, 2, 3, 4, 1, 6]
 [1, 2, 3, 4, 5, 6].copyWithin(4, 0, 5); 
 // 從5開始替換,讀取到的數據爲【1,2,3,4],那麼只將5替換成1 輸出  [1, 2, 3, 4, 1, 2]

array.fill(value [,statrt = 0[, end = this.length]])

同上 start end 不填寫默認爲全部填充

[1, 2, 3, 4, 5, 6].fill(null, 0, 12) // [null, null, null, null, null]
[1, 2, 3, 4, 5, 6].fill(null, 0, 1) // [null,2,3,4,5]

array.pop()

刪除數組中最後一個元素,並且返回這個元素

array.push(element1, …elementN)

添加一個或者多個元素到末尾,並且返回新數組的長度

array.reverse()

前後顛倒數組中的元素,第一個元素會變成最後一個

array.shift()

刪除數組的第一個元素,並且返回這個元素

array.unshift(element1, …elementN)

在數組的開頭插入一個或者多個元素 並返回數組的新長度

array.sort(fn(a,b))

排序 傳入函數(a, b)的返回值 小於 0 a會在b前面,等於0 位置不變,大於0 a在b後面

array.splice(start, deleteCount[, item1[, item2…])

  • start: 開始操作的索引
  • deleteCount: 要移除的數組元素的個數
  • itemN: 要添加進數組的元素,如果不指定,則splice只刪除數組元素

2. 不會改變自身的方法

array.concat(value1, value2…)

將傳入的數組或者非數組值合併,組成一個新的數組並返回

array.includes(searchElement, [, fromIndex])

第一個參數爲查找的值,第二個參數爲從原數組中的什麼索引位置開始查找 默認爲0 注意此處使用的是 === 嚴格匹配

[1, 2, 3, 4, 5, 6].includes(1); // true 從索引爲0 開始找包含1 返回ture
[1, 2, 3, 4, 5, 6].includes(1, 1); // false 從索引爲1 開始找 不含1 返回 false

array.indexOf(searchElement[, fromIndex = 0])

同 includes 第一個匹配上的索引值

array.lastIndexOf(searchElement[, fromIndex = arr.length - 1])

同 indexOf 最後一個匹配上的索引值

array.join([separator = ',’])

, 替換爲指定的字符串,並返回字符串

array.slice([begin = 0 [, end = this.length - 1]])

淺複製

array.toString()

每一項的元素都toString() 組合返回值

[1, 2, {a: 1}].toString(); // 1,2,[object Object]

array.toLocaleString()

同上 只不過每一項調用的是 toLocaleString

3. 遍歷方法

array.forEach((v, i, a) => {})

v: 每一項的值 i每一項的索引 a 當前這個數組 無返回值

array.entries()

返回 Array Iterator 對象 Iterator參考 iterator

var arr = ["a", "b", "c"];
var eArr = arr.entries();

console.log(eArr.next().value); // [0, "a"]
console.log(eArr.next().value); // [1, "b"]
console.log(eArr.next().value); // [2, "c"]

array.keys()

返回索引的iterator

array.every(callback(v, i, a){})

返回一個bool, 每一項的callback返回的值都爲true 時返回true 否則返回false,注意,其中如果有某一次返回了false 循環將不再繼續

[1, 2, 3, 4].every(item => {
    console.log('====');
    return item < 2;
}); // 輸出兩次 ==== 返回false

array.some()

某一項爲true 即返回true,注意:其中如果有某一次返回了true,循環將不再繼續

array.filter((v, i, a) => {})

將callback返回true的保留

array.find((v, i, a) =>{})

找到滿足的條件的元素,並返回該值。注意一旦找到了,循環將不再繼續

array.map((v, i, a) => {})

返回新的數組

array.reduce(callback[, initialValue]) >

如果initialValue沒有值那麼prev 爲數組中的第一個值,next爲數組中的第二個值

[0, 1, 2, 3, 4, 5].reduce((p, v, i , a) => {
    return p + v
}) // 15

array.reduceRight()

同上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章