常用方法速覽:
接下來是比較全的、詳細(xì)的方法用法
1. Array.from()
該方法從一個(gè)類似數(shù)組或可迭代對象中創(chuàng)建一個(gè)新的,淺拷貝的數(shù)組實(shí)例。
語法:
Array.from(arrayLike[, mapFn[, thisArg]])
參數(shù):
arrayLike -- 想要轉(zhuǎn)換成數(shù)組的偽數(shù)組對象或可迭代對象。
mapFn -- (可選參數(shù)) 如果指定了該參數(shù),新數(shù)組中的每個(gè)元素會(huì)執(zhí)行該回調(diào)函數(shù)。
thisArg -- (可選參數(shù)) 可選參數(shù),執(zhí)行回調(diào)函數(shù) mapFn 時(shí) this 對象。
返回值:一個(gè)新的數(shù)組實(shí)例。
console.log(Array.from('foo')); // ["f", "o", "o"]
console.log(Array.from([1, 2, 3], x => x + x)); // [2, 4, 6]
2. Array.isArray()
用于確定傳遞的值是否是一個(gè) Array。
Array.isArray([1, 2, 3]);
// true
Array.isArray({foo: 123});
// false
Array.isArray("foobar");
// false
Array.isArray(undefined);
// false
3. Array.of()
創(chuàng)建一個(gè)具有可變數(shù)量參數(shù)的新數(shù)組實(shí)例,而不考慮參數(shù)的數(shù)量或類型。
Array.of() 和 Array 構(gòu)造函數(shù)之間的區(qū)別在于處理整數(shù)參數(shù):Array.of(7) 創(chuàng)建一個(gè)具有單個(gè)元素 7 的數(shù)組,而 Array(7) 創(chuàng)建一個(gè)長度為7的空數(shù)組(注意:這是指一個(gè)有7個(gè)空位(empty)的數(shù)組,而不是由7個(gè)undefined組成的數(shù)組)。
Array.of(7); // [7]
Array.of(1, 2, 3); // [1, 2, 3]
Array(7); // [ , , , , , , ]
Array(1, 2, 3); // [1, 2, 3]
Array.of(undefined); // [undefined]
4. concat()
用于合并兩個(gè)或多個(gè)數(shù)組。此方法不會(huì)更改現(xiàn)有數(shù)組,而是返回一個(gè)新數(shù)組。
語法:
var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
var array1 = ['a', 'b', 'c'];
var array2 = ['d', 'e', 'f'];
var arr = array1.concat(array2);
console.log(arr); // ["a", "b", "c", "d", "e", "f"]
console.log(array1); // ["a", "b", "c"]
5. copyWithin()
淺復(fù)制數(shù)組的一部分到同一數(shù)組中的另一個(gè)位置,并返回它,不會(huì)改變原數(shù)組的長度,但是會(huì)(同返回值)。
語法:
arr.copyWithin(target[, start[, end]])
參數(shù):
target -- 0 為基底的索引,復(fù)制序列到該位置。如果是負(fù)數(shù),target 將從末尾開始計(jì)算。如果 target 大于等于 arr.length,將會(huì)不發(fā)生拷貝。如果 target 在 start 之后,復(fù)制的序列將被修改以符合 arr.length。
start -- 0 為基底的索引,開始復(fù)制元素的起始位置。如果是負(fù)數(shù),start 將從末尾開始計(jì)算。如果 start 被忽略,copyWithin 將會(huì)從0開始復(fù)制。
end -- 0 為基底的索引,開始復(fù)制元素的結(jié)束位置。copyWithin 將會(huì)拷貝到該位置,但不包括 end 這個(gè)位置的元素。如果是負(fù)數(shù), end 將從末尾開始計(jì)算。
返回值:改變后的數(shù)組。
var array1 = ['a', 'b', 'c', 'd', 'e'];
console.log(array1.copyWithin(0, 3, 4)); // ["d", "b", "c", "d", "e"]
console.log(array1); // ["d", "b", "c", "d", "e"]
console.log(array1.copyWithin(1, 3)); // ["d", "d", "e", "d", "e"]
let numbers = [1, 2, 3, 4, 5];
numbers.copyWithin(-2); // [1, 2, 3, 1, 2]
numbers.copyWithin(0, 3); // [4, 5, 3, 4, 5]
numbers.copyWithin(0, 3, 4); // [4, 2, 3, 4, 5]
numbers.copyWithin(-2, -3, -1); // [1, 2, 3, 3, 4]
6. entries()
該方法返回一個(gè)新的Array Iterator對象,該對象包含數(shù)組中每個(gè)索引的鍵/值對。
var array1 = ['a', 'b', 'c'];
var iterator1 = array1.entries();
console.log(iterator1.next().value); // [0, "a"]
console.log(iterator1.next().value); // [1, "b"]
var arr = ["a", "b", "c"];
var iterator = arr.entries();
for (let e of iterator) {
console.log(e);
}
// [0, "a"]
// [1, "b"]
// [2, "c"]
7. every()
該方法測試一個(gè)數(shù)組內(nèi)的所有元素是否都能通過某個(gè)指定函數(shù)的測試。它返回一個(gè)布爾值。若收到一個(gè)空數(shù)組,此方法在一切情況下都會(huì)返回 true。
語法:
arr.every(callback[, thisArg])
參數(shù):
callback -- 用來測試每個(gè)元素的函數(shù),它可以接收三個(gè)參數(shù):
element : 用于測試的當(dāng)前值。
index :可選,用于測試的當(dāng)前值的索引。
array:可選,調(diào)用 every 的當(dāng)前數(shù)組。
thisArg -- 執(zhí)行 callback 時(shí)使用的 this 值。
返回值:如果回調(diào)函數(shù)的每一次返回都為 truthy 值,返回 true ,否則返回 false。
every 方法為數(shù)組中的每個(gè)元素執(zhí)行一次 callback 函數(shù),直到它找到一個(gè)會(huì)使 callback 返回 falsy 的元素。如果發(fā)現(xiàn)了一個(gè)這樣的元素,every 方法將會(huì)立即返回 false。否則,callback 為每一個(gè)元素返回 true,every 就會(huì)返回 true。callback 只會(huì)為那些已經(jīng)被賦值的索引調(diào)用。不會(huì)為那些被刪除或從未被賦值的索引調(diào)用。
const val = [12, 5, 8, 130, 44].every((x,i,array) => {
console.log(x,i,array);
return x >= 10;
});
// 12 0 [12, 5, 8, 130, 44]
// 5 1 [12, 5, 8, 130, 44]
console.log(val); // false
[12, 54, 18, 130, 44].every(x => x >= 10); // true
8. some()
測試是否至少有一個(gè)元素可以通過被提供的函數(shù)方法。該方法返回一個(gè)Boolean類型的值。
[2, 5, 8, 1, 4].some(x => x > 10); // false
[12, 5, 8, 1, 4].some(x => x > 10); // true
9. fill()
用一個(gè)固定值填充一個(gè)數(shù)組中從起始索引到終止索引內(nèi)的全部元素。不包括終止索引。(同返回值)
語法:
arr.fill(value[, start[, end]])
value -- 用來填充數(shù)組元素的值。
start -- 起始索引,默認(rèn)值為0。
end -- 終止索引,默認(rèn)值為 this.length。
返回值:改變后的數(shù)組。
var arr = [1, 2, 3];
arr.fill(4); // [4, 4, 4]
console.log(arr); // [4, 4, 4]
[1, 2, 3].fill(4, 1); // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2); // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1); // [1, 2, 3]
[1, 2, 3].fill(4, 3, 3); // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2); // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN); // [1, 2, 3]
[1, 2, 3].fill(4, 3, 5); // [1, 2, 3]
10. filter()
創(chuàng)建一個(gè)新數(shù)組, 其包含通過所提供函數(shù)實(shí)現(xiàn)的測試的所有元素。
語法:
var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])
返回值:一個(gè)新的、由通過測試的元素組成的數(shù)組,如果沒有任何數(shù)組元素通過測試,則返回空數(shù)組。
var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(val => val.length > 6);
console.log(result); // ["exuberant", "destruction", "present"]
console.log(words); // ["spray", "limit", "elite", "exuberant", "destruction", "present"]
11. find()
返回?cái)?shù)組中滿足提供的測試函數(shù)的第一個(gè)元素的值。否則返回undefined。
語法:
arr.find(callback[, thisArg])
返回值:數(shù)組中第一個(gè)滿足所提供測試函數(shù)的元素的值,否則返回 undefined。
find方法對數(shù)組中的每一項(xiàng)元素執(zhí)行一次 callback 函數(shù),直至有一個(gè) callback 返回 true。當(dāng)找到了這樣一個(gè)元素后,該方法會(huì)立即返回這個(gè)元素的值,否則返回 undefined。
var array1 = [5, 12, 8, 130, 44];
var found = array1.find((element,i) => {
console.log(i); // 0 1
return element > 10;
});
console.log(found); // 12
12. findIndex()
返回?cái)?shù)組中滿足提供的測試函數(shù)的第一個(gè)元素的索引。否則返回-1。
var array1 = [5, 12, 8, 130, 44];
var found = array1.findIndex((element,i) => {
console.log(i); // 0 1
return element > 10;
});
console.log(found); // 1
13. flat()
按照一個(gè)可指定的深度遞歸遍歷數(shù)組,并將所有元素與遍歷到的子數(shù)組中的元素合并為一個(gè)新數(shù)組返回。不改變原數(shù)組。
語法:
var newArray = arr.flat(depth)
返回值:一個(gè)包含將數(shù)組與子數(shù)組中所有元素的新數(shù)組。
var arr1 = [1, 2, [3, 4]];
arr1.flat(); // [1, 2, 3, 4]
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat(); // [1, 2, 3, 4, [5, 6]]
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2); // [1, 2, 3, 4, 5, 6]
//使用 Infinity 作為深度,展開任意深度的嵌套數(shù)組
arr3.flat(Infinity); // [1, 2, 3, 4, 5, 6]
flat() 方法會(huì)移除數(shù)組中的空項(xiàng):
var arr4 = [1, 2, , 4, 5];
arr4.flat(); // [1, 2, 4, 5]
14. flatMap()
首先使用映射函數(shù)映射每個(gè)元素,然后將結(jié)果壓縮成一個(gè)新數(shù)組。它與 map 和 深度值1的 flat 幾乎相同,但 flatMap 通常在合并成一種方法的效率稍微高一些。
語法:
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {
// 返回新數(shù)組的元素
}[, thisArg])
返回值:一個(gè)新的數(shù)組,其中每個(gè)元素都是回調(diào)函數(shù)的結(jié)果,并且結(jié)構(gòu)深度 depth 值為1。
var arr1 = [1, 2, 3, 4];
arr1.map(x => [x * 2]); // [[2], [4], [6], [8]]
arr1.flatMap(x => [x * 2]); // [2, 4, 6, 8]
// 只會(huì)將 flatMap 中的函數(shù)返回的數(shù)組 “壓平” 一層
arr1.flatMap(x => [[x * 2]]); // [[2], [4], [6], [8]]
15. forEach()
對數(shù)組的每個(gè)元素執(zhí)行一次提供的函數(shù)。
var arr1 = ['a', 'b', 'c', 'd'];
arr1.forEach((ele, i) => {
console.log(ele,i);
});
// a 0
// b 1
// c 2
// d 3
16. includes()
用來判斷一個(gè)數(shù)組是否包含一個(gè)指定的值,根據(jù)情況,如果包含則返回 true,否則返回false。使用 includes()比較字符串和字符時(shí)是區(qū)分大小寫。
注意:對象數(shù)組不能使用includes方法來檢測。
語法:
arr.includes(valueToFind[, fromIndex])
參數(shù):
valueToFind -- 需要查找的元素值。
fromIndex -- 可選。從fromIndex 索引處開始查找 valueToFind。如果為負(fù)值,則按升序從 array.length + fromIndex 的索引開始搜 (即使從末尾開始往前跳 fromIndex 的絕對值個(gè)索引,然后往后搜尋)。默認(rèn)為 0。
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
17. indexOf()
返回在數(shù)組中可以找到一個(gè)給定元素的第一個(gè)索引,如果不存在,則返回-1。
語法:
arr.indexOf(searchElement[, fromIndex = 0])
參數(shù):
searchElement -- 要查找的元素。
fromIndex -- 開始查找的位置。如果該索引值大于或等于數(shù)組長度,意味著不會(huì)在數(shù)組里查找,返回-1。如果參數(shù)中提供的索引值是一個(gè)負(fù)值,則將其作為數(shù)組末尾的一個(gè)抵消,即-1表示從最后一個(gè)元素開始查找,-2表示從倒數(shù)第二個(gè)元素開始查找 ,以此類推。 注意:如果參數(shù)中提供的索引值是一個(gè)負(fù)值,并不改變其查找順序,查找順序仍然是從前向后查詢數(shù)組。如果抵消后的索引值仍小于0,則整個(gè)數(shù)組都將會(huì)被查詢。其默認(rèn)值為0.
返回值:首個(gè)被找到的元素在數(shù)組中的索引位置; 若沒有找到則返回 -1。
var array = [2, 5, 9];
array.indexOf(2); // 0
array.indexOf(7); // -1
array.indexOf(9, 2); // 2
array.indexOf(2, -1); // -1
array.indexOf(2, -3); // 0
18. join()
將一個(gè)數(shù)組(或一個(gè)類數(shù)組對象)的所有元素連接成一個(gè)字符串并返回這個(gè)字符串。如果數(shù)組只有一個(gè)項(xiàng)目,那么將返回該項(xiàng)目而不使用分隔符。
注意:如果一個(gè)元素為 undefined 或 null,它會(huì)被轉(zhuǎn)換為空字符串。
var a = ['Wind', 'Rain', 'Fire'];
var myVar1 = a.join(); // myVar1的值變?yōu)?Wind,Rain,Fire"
var myVar2 = a.join(', '); // myVar2的值變?yōu)?Wind, Rain, Fire"
var myVar3 = a.join(' + '); // myVar3的值變?yōu)?Wind + Rain + Fire"
var myVar4 = a.join(''); // myVar4的值變?yōu)?WindRainFire"
var b = ['Wind', 'Rain', null, 'Fire', undefined, 6];
console.log(b.join('/')); // Wind/Rain//Fire//6
console.log(b); // ["Wind", "Rain", null, "Fire", undefined, 6]
19. lastIndexOf()
返回指定元素(也即有效的 JavaScript 值或變量)在數(shù)組中的最后一個(gè)的索引,如果不存在則返回 -1。從數(shù)組的后面向前查找,從 fromIndex 處開始。
語法:
arr.lastIndexOf(searchElement[, fromIndex = arr.length - 1])
參數(shù):
searchElement -- 被查找的元素。
fromIndex -- 從此位置開始逆向查找。默認(rèn)為數(shù)組的長度減 1,即整個(gè)數(shù)組都被查找。如果該值大于或等于數(shù)組的長度,則整個(gè)數(shù)組會(huì)被查找。如果為負(fù)值,將其視為從數(shù)組末尾向前的偏移。即使該值為負(fù),數(shù)組仍然會(huì)被從后向前查找。如果該值為負(fù)時(shí),其絕對值大于數(shù)組長度,則方法返回 -1,即數(shù)組不會(huì)被查找。
返回值:數(shù)組中最后一個(gè)元素的索引,如未找到返回-1。
var array = [2, 5, 9, 2];
var index = array.lastIndexOf(2); // index is 3
index = array.lastIndexOf(7); // index is -1
index = array.lastIndexOf(2, 3); // index is 3
index = array.lastIndexOf(2, 2); // index is 0
index = array.lastIndexOf(2, -2); // index is 0
index = array.lastIndexOf(2, -1); // index is 3
20. map()
創(chuàng)建一個(gè)新數(shù)組,其結(jié)果是該數(shù)組中的每個(gè)元素都調(diào)用一個(gè)提供的函數(shù)后返回的結(jié)果。
語法:
var new_array = arr.map((currentValue, index, array) => {
// Return element for new_array
}, thisArg)
var numbers = [1, 4, 9];
var doubles = numbers.map(function(num) {
return num * 2;
});
// doubles數(shù)組的值為: [2, 8, 18]
// numbers數(shù)組未被修改: [1, 4, 9]
21. pop()
從數(shù)組中刪除最后一個(gè)元素,并返回該元素的值。此方法。
let myFish = ["angel", "clown", "mandarin", "surgeon"];
let popped = myFish.pop();
console.log(myFish); // ["angel", "clown", "mandarin"]
console.log(popped); // surgeon
22. push()
將一個(gè)或多個(gè)元素添加到數(shù)組的末尾,并返回該數(shù)組的新長度。此方法。
var sports = ["soccer", "baseball"];
var total = sports.push("football", "swimming");
console.log(sports); // ["soccer", "baseball", "football", "swimming"]
console.log(total); // 4
23. shift()
從數(shù)組中刪除第一個(gè)元素,并返回該元素的值。此方法。
let myFish = ['angel', 'clown', 'mandarin', 'surgeon'];
console.log(myFish); // ["angel", "clown", "mandarin", "surgeon"]
var shifted = myFish.shift();
console.log(myFish); // ["clown", "mandarin", "surgeon"]
console.log('被刪除的元素: ', shifted); // 被刪除的元素: angel
24. unshift()
將一個(gè)或多個(gè)元素添加到數(shù)組的開頭,并返回該數(shù)組的新長度,該方法。
arr.unshift(element1, ..., elementN)
let arr = [1, 2];
arr.unshift(0); // result of the call is 3, which is the new array length
// arr is [0, 1, 2]
arr.unshift(-2, -1); // the new array length is 5
// arr is [-2, -1, 0, 1, 2]
arr.unshift([-4, -3]); // the new array length is 6
// arr is [[-4, -3], -2, -1, 0, 1, 2]
arr.unshift([-7, -6], [-5]); // the new array length is 8
// arr is [ [-7, -6], [-5], [-4, -3], -2, -1, 0, 1, 2 ]
25. reverse()
將數(shù)組中元素的位置顛倒,并返回該數(shù)組。該方法。
var sourceArray = ['one', 'two', 'three'];
var reverseArray = sourceArray.reverse();
console.log(sourceArray ) // ['three', 'two', 'one']
console.log(sourceArray === reverseArray); // true
26. sort()
用原地算法對數(shù)組的元素進(jìn)行排序,并返回?cái)?shù)組。默認(rèn)排序順序是在將元素轉(zhuǎn)換為字符串,然后比較它們的UTF-16代碼單元值序列時(shí)構(gòu)建的。該方法。
arr.sort([compareFunction])
參數(shù):
compareFunction -- 可選。用來指定按某種順序進(jìn)行排列的函數(shù)。如果省略,元素按照轉(zhuǎn)換為的字符串的各個(gè)字符的Unicode位點(diǎn)進(jìn)行排序。
firstEl:第一個(gè)用于比較的元素。
secondEl:第二個(gè)用于比較的元素。
返回值:排序后的數(shù)組。請注意,數(shù)組已原地排序,并且不進(jìn)行復(fù)制。
如果指明了 compareFunction ,那么數(shù)組會(huì)按照調(diào)用該函數(shù)的返回值排序。即 a 和 b 是兩個(gè)將要被比較的元素:
- 如果 compareFunction(a, b) 小于 0 ,那么 a 會(huì)被排列到 b 之前;
- 如果 compareFunction(a, b) 等于 0 , a 和 b 的相對位置不變。備注: ECMAScript 標(biāo)準(zhǔn)并不保證這一行為,而且也不是所有瀏覽器都會(huì)遵守(例如 Mozilla 在 2003 年之前的版本);
- 如果 compareFunction(a, b) 大于 0 , b 會(huì)被排列到 a 之前。
- compareFunction(a, b) 必須總是對相同的輸入返回相同的比較結(jié)果,否則排序的結(jié)果將是不確定的。
//升序
var numbers = [4, 2, 5, 1, 3];
var num = numbers.sort((a, b) => a - b);
console.log(numbers,num); // [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
// 降序
var number1 = [4, 2, 5, 1, 3];
var num1 = number1.sort((a, b) => b - a);
console.log(number1,num1); // [5, 4, 3, 2, 1] [5, 4, 3, 2, 1]
var arr = ['s', 2,'d',23];
arr.sort();
console.log(arr); // [2, 23, "d", "s"] 按照ASCII 字符編碼排序。
27. slice()
返回被提取的數(shù)組對象,這一對象是一個(gè)由 begin 和 end 決定的原數(shù)組的淺拷貝,包括 begin,不包括end。原始數(shù)組不會(huì)被改變。
arr.slice([begin[, end]])
參數(shù):
begin -- 可選。提取起始處的索引,從該索引開始提取原數(shù)組元素,默認(rèn)為 0。
- 如果該參數(shù)為負(fù)數(shù),則表示從原數(shù)組中的倒數(shù)第幾個(gè)元素開始提取,slice(-2) 表示提取原數(shù)組中的倒數(shù)第二個(gè)元素到最后一個(gè)元素(包含最后一個(gè)元素)。
- 如果省略 begin,則 slice 從索引 0 開始。如果 begin 大于原數(shù)組的長度,則會(huì)返回空數(shù)組。
end -- 可選。提取終止處的索引,在該索引處結(jié)束提取原數(shù)組元素,默認(rèn)為數(shù)組的長度。slice 會(huì)提取原數(shù)組中索引從 begin 到 end 的所有元素(包含 begin,但不包含 end)。
- slice(1,4) 會(huì)提取原數(shù)組中從第二個(gè)元素開始一直到第四個(gè)元素的所有元素 (索引為 1, 2, 3的元素)。
- 如果該參數(shù)為負(fù)數(shù), 則它表示在原數(shù)組中的倒數(shù)第幾個(gè)元素結(jié)束抽取。 slice(-2,-1) 表示抽取了原數(shù)組中的倒數(shù)第二個(gè)元素到最后一個(gè)元素(不包含最后一個(gè)元素,也就是只有倒數(shù)第二個(gè)元素)。
- 如果 end 被省略,則slice 會(huì)一直提取到原數(shù)組末尾。
- 如果 end 大于數(shù)組的長度,slice 也會(huì)一直提取到原數(shù)組末尾。
var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
var citrus = fruits.slice(1, 3);
// fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
// citrus contains ['Orange','Lemon']
28. splice()
通過刪除或替換現(xiàn)有元素或者原地添加新的元素來修改數(shù)組,并以數(shù)組形式返回被修改的內(nèi)容。此方法會(huì)。
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
參數(shù):
start -- 指定修改的開始位置(從0計(jì)數(shù))。如果超出了數(shù)組的長度,則從數(shù)組末尾開始添加內(nèi)容;如果是負(fù)值,則表示從數(shù)組末位開始的第幾位(從-1計(jì)數(shù),這意味著-n是倒數(shù)第n個(gè)元素并且等價(jià)于array.length-n);如果負(fù)數(shù)的絕對值大于數(shù)組的長度,則表示開始位置為第0位。
deleteCount -- 可選。整數(shù),表示要移除的數(shù)組元素的個(gè)數(shù)。如果 deleteCount 大于 start 之后的元素的總數(shù),則從 start 后面的元素都將被刪除(含第 start 位)。
如果 deleteCount 被省略了,或者它的值大于等于array.length - start(也就是說,如果它大于或者等于start之后的所有元素的數(shù)量),那么start之后數(shù)組的所有元素都會(huì)被刪除。
如果 deleteCount 是 0 或者負(fù)數(shù),則不移除元素。這種情況下,至少應(yīng)添加一個(gè)新元素。
item1, item2, ... -- 可選。要添加進(jìn)數(shù)組的元素,從start 位置開始。如果不指定,則 splice() 將只刪除數(shù)組元素。
返回值:由被刪除的元素組成的一個(gè)數(shù)組。如果只刪除了一個(gè)元素,則返回只包含一個(gè)元素的數(shù)組。如果沒有刪除元素,則返回空數(shù)組。
//*************刪除
var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
var removed = myFish.splice(3, 1);
// myFish: ["angel", "clown", "drum", "sturgeon"]
// removed: ["mandarin"]
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2);
// myFish: ["angel", "clown"]
// removed: ["mandarin", "sturgeon"]
//*************添加
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2, 0, 'drum', 'guitar');
// myFish: ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
// removed: []
//*************替換
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2, 1, 'drum', );
// myFish: ["angel", "clown", "drum", "sturgeon"]
// removed: ["mandarin"]
29. reduce()
對數(shù)組中的每個(gè)元素執(zhí)行一個(gè)由您提供的reducer函數(shù)(升序執(zhí)行),將其結(jié)果匯總為單個(gè)返回值。
語法:
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
reducer 函數(shù)接收4個(gè)參數(shù):
- Accumulator (acc) (累計(jì)器) -- 累計(jì)回調(diào)的返回值; 它是上一次調(diào)用回調(diào)時(shí)返回的累積值,或initialValue(見于下方)。
- Current Value (cur) (當(dāng)前值)
- Current Index (idx) (當(dāng)前索引) -- 數(shù)組中正在處理的當(dāng)前元素的索引。 如果提供了initialValue,則起始索引號為0,否則為1。
-
Source Array (src) (源數(shù)組) -- 調(diào)用reduce()的數(shù)組
reducer 函數(shù)的返回值分配給累計(jì)器,該返回值在數(shù)組的每個(gè)迭代中被記住,并最后成為最終的單個(gè)結(jié)果值。
回調(diào)函數(shù)第一次執(zhí)行時(shí),accumulator 和currentValue的取值有兩種情況:如果調(diào)用reduce()時(shí)提供了initialValue,accumulator取值為initialValue,currentValue取數(shù)組中的第一個(gè)值;如果沒有提供 initialValue,那么accumulator取數(shù)組中的第一個(gè)值,currentValue取數(shù)組中的第二個(gè)值。
注意:如果沒有提供initialValue,reduce 會(huì)從索引1的地方開始執(zhí)行 callback 方法,跳過第一個(gè)索引。如果提供initialValue,從索引0開始。
const arr = [13, 2, 23, 4];
const val = arr.reduce((acc, curVal, i) => {
console.log(acc); // 13 13 23
console.log(curVal); // 2 23 4
console.log(i); // 1 2 3
return Math.max(acc,curVal);
});
console.log(val); // 23
30. toString()
返回一個(gè)字符串,表示指定的數(shù)組及其元素。
var array1 = [1, 2, 'a', '1a'];
console.log(array1.toString()); // 1,2,a,1a
console.log(array1); // [1, 2, "a", "1a"]