Array.prototype.splice
splice() 方法通過刪除現有元素和/或添加新元素來更改一個數組的內容。
語法
array.splice(start)
array.splice(start, deleteCount)
array.splice(start, deleteCount, item1, item2, ...)
var myFish = ["angel", "clown", "mandarin", "surgeon"];
//從第 2 位開始刪除 0 個元素,插入 "drum"
var removed = myFish.splice(2, 0, "drum");
//運算后的 myFish:["angel", "clown", "drum", "mandarin", "surgeon"]
//被刪除元素數組:[],沒有元素被刪除
//從第 3 位開始刪除 1 個元素
removed = myFish.splice(3, 1);
//運算后的myFish:["angel", "clown", "drum", "surgeon"]
//被刪除元素數組:["mandarin"]
//從第 2 位開始刪除 1 個元素,然后插入 "trumpet"
removed = myFish.splice(2, 1, "trumpet");
//運算后的myFish: ["angel", "clown", "trumpet", "surgeon"]
//被刪除元素數組:["drum"]
//從第 0 位開始刪除 2 個元素,然后插入 "parrot", "anemone" 和 "blue"
removed = myFish.splice(0, 2, "parrot", "anemone", "blue");
//運算后的myFish:["parrot", "anemone", "blue", "trumpet", "surgeon"]
//被刪除元素的數組:["angel", "clown"]
//從第 3 位開始刪除 2 個元素
removed = myFish.splice(3, Number.MAX_VALUE);
//運算后的myFish: ["parrot", "anemone", "blue"]
//被刪除元素的數組:["trumpet", "surgeon"]
Array.prototype.slice()
slice() 方法返回一個從開始到結束(不包括結束)選擇的數組的一部分淺拷貝到一個新數組對象。原始數組不會被修改。
var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
var citrus = fruits.slice(1, 3);
// fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
// citrus contains ['Orange','Lemon']
Array.prototype.reduce()
reduce() 方法對累加器和數組中的每個元素(從左到右)應用一個函數,將其減少為單個值。
語法
arr.reduce(callback[, initialValue])
數組累加求和
let res = [0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array){
return accumulator + currentValue;
});
console.log(res);
reduce為數組中的每一個元素依次執行callback函數,不包括數組中被刪除或從未被賦值的元素,接受四個參數:①accumulator ②currentValue ③currentIndex ④array
回調函數第一次執行時,accumulator 和currentValue的取值有兩種情況:調用reduce時提供initialValue,accumulator取值為initialValue,currentValue取數組中的第一個值;沒有提供 initialValue,accumulator取數組中的第一個值,currentValue取數組中的第二個值。
注意:如果沒有提供initialValue,reduce 會從索引1的地方開始執行 callback 方法,跳過第一個索引。如果提供initialValue,從索引0開始。
Array.prototype.find()
find()方法返回數組中滿足提供的測試函數的第一個元素的值。否則返回 undefined
var inventory = [
{name: 'apples', quantity: 2},
{name: 'bananas', quantity: 0},
{name: 'cherries', quantity: 5}
];
function findBananas(fruit){
return fruit.name === 'bananas';
}
console.log(inventory.find(findBananas));
const isPrime = (ele, index, arr) => {
let start = 2;
while(start <= Math.sqrt(ele)){
if(ele % start ===0){
return false;
}
start++;
}
return ele > 1;
}
const arr = [7,8,9,10,11];
console.log(arr.find(isPrime));