1. 程式人生 > >js陣列API總結

js陣列API總結

歡迎指正補充。

callback中引數永遠是(當前值value,下標index,原陣列arr)


遍歷:
1:foreach 對陣列的每個元素執行一次提供的函式
用法:
array.forEach(callback(currentValue, index, array){
    //do something
}, this)
array.forEach(callback[, thisArg])
注意:遍歷作用,沒有返回值,不可以鏈式呼叫 ;除非丟擲異常否則不可以被打斷;如果使用箭頭函式傳入函式引數,thisArg 引數會被忽略,因為箭頭函式在詞法上綁定了this值

變換:
1:map 建立一個新陣列,其結果是該陣列中的每個元素都呼叫一個提供的函式後返回的結果。
用法:
let array = arr.map(function callback(currentValue, index, array) { 
    // Return element for new_array 
}[, thisArg])
注意:
對映返回一個新陣列長度不變

2:reduce 對累加器和陣列中的每個元素 (從左到右)應用一個函       數,將其減少為單個值
用法:
array.reduce(function(accumulator, currentValue, currentIndex, array), initialValue)
注意:
不提供 initialValue ,reduce 會從索引1的地方開始執行 callback 方法,跳過第一個索引。提供 initialValue ,從索引0開始。如果陣列為空並且沒有提供initialValue, 會丟擲TypeError 。如果陣列僅有一個元素(無論位置如何)並且沒有提initialValue, 或者有提供initialValue但是陣列為空,那麼此唯一值將被返回並且callback不會被執行。提供 initialValue 通常更安全。返回一個最終的累加值。

3:reduceRight 和reduce方向直行相反

4:filter 建立一個新陣列, 返回通過測試的所有元素。
用法:
var new_array = arr.filter(callback[, thisArg])
注意:
返回true表示保留該元素(通過測試),false則不保留。

查詢:

1:some 找到符合條件的停止並返回true 沒有找到返回false
用法:
arr.some(callback[, thisArg])
const isBiggerThan10 = (element, index, array) => {
  return element > 10;
}
[2, 5, 8, 1, 4].some(isBiggerThan10);  //false
注意:
some 為陣列中的每一個元素執行一次 callback 函式,直到找到一個使得 callback 返回一個“真值”(即可轉換為布林值 true 的值)。如果找到了這樣一個值,some 將會立即返回 true。否則,some 返回 false。callback 只會在那些”有值“的索引上被呼叫,不會在那些被刪除或從來未被賦值的索引上呼叫。

2:every 陣列全部通過測試返回true 一旦發現不滿足條件的返回false立即停止

3:includes() 方法用來判斷一個數組是否包含一個指定的值,如果是,酌情返回 true或 false。
用法:arr.includes(searchElement, fromIndex)
注意:是否包含一個指定的值而不是一個條件

4:indexof方法返回在陣列中可以找到一個給定元素的第一個索引,如果不存在,則返回-1。
用法:
arr.indexOf(searchElement[, fromIndex = 0])
注意:
開始查詢的位置。如果該索引值大於或等於陣列長度,意味著不會在數組裡查詢,返回-1。如果引數中提供的索引值是一個負值,則將其作為陣列末尾的一個抵消,即-1表示從最後一個元素開始查詢,-2表示從倒數第二個元素開始查詢 ,以此類推。 注意:如果引數中提供的索引值是一個負值,仍然從前向後查詢陣列。如果抵消後的索引值仍小於0,則整個陣列都將會被查詢。其預設值為0;是否包含一個指定的值而不是一個條件;
5:lastIndexOf 從後往前找 類似indexof

6:find 方法返回陣列中滿足提供的測試函式的第一個元素的值
用法:
arr.find(callback[, thisArg])
7:findindex 返回陣列中滿足提供的測試函式的第一個元素的索引。否則返回-1。
用法:
arr.findIndex(callback[, thisArg])

刪除:

1:pop()方法從陣列中刪除最後一個元素,並返回該元素的值。此方法更改陣列的長度。
使用:
arr.pop()
注意:
如果你在一個空陣列上呼叫 pop(),它返回  undefined。

2:shift() 方法從陣列中刪除第一個元素,並返回該元素的值。此方法更改陣列的長度。
注意:
shift 方法移除索引為 0 的元素(即第一個元素),並返回被移除的元素,其他元素的索引值隨之減 1。如果 length 屬性的值為 0 (長度為 0),則返回 undefined。

3:slice() 方法返回一個從開始到結束(不包括結束)選擇的陣列的一部分淺拷貝到一個新陣列物件。原始陣列不會被修改。

新增:
1:push() 方法將一個或多個元素新增到陣列的末尾,並返回陣列的新長度。
2:unshift() 方法將一個或多個元素新增到陣列的開頭,並返回新陣列的長度。
3:concat() 方法用於合併兩個或多個數組。此方法不會更改現有陣列,而是返回一個新陣列。
用法:
var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])

陣列轉化字串:

1:join() 方法將陣列(或一個類陣列物件)的所有元素連線到一個字串中,不會改變陣列。

2:toLocaleString() 返回一個字串表示陣列中的元素。陣列中的元素將使用各自的 toLocaleString 方法轉成字串,這些字串將使用一個特定語言環境的字串(例如一個逗號 ",")隔開

3:toString() 返回一個字串,表示指定的陣列及其元素。
注意:
Array 物件覆蓋了 Object 的 toString 方法。對於陣列物件,toString 方法返回一個字串,該字串由陣列中的每個元素的 toString() 返回值經呼叫 join() 方法連線(由逗號隔開)組成。例如,下面的程式碼建立了一個數組,然後使用 toString 方法把該陣列轉成一個字串。

所以當呼叫join不能獲得字串時呼叫toString也不能獲取到。

4: JSON.stringify()
 let arr = [{name: 1},{name: 2},{name: 3},{name: 4},{name: 5},{name: 6}, {name: 7}];
 let json = JSON.stringify(arr);//獲得字串