前言
不廢話(huà),直接上正題。
1 forEach (讓數(shù)組中的每一項(xiàng)都做一件事)
如果不做特殊處理,一般情況下,不會(huì)break的。如果需要中途跳出循環(huán),建議直接用for語(yǔ)句好了。
let arr = [1,2,3,4,5];
arr.forEach((item,index)=> {
console.log(item);
})
// 1,2,3,4,5

image
2 map (讓數(shù)組通過(guò)某種計(jì)算產(chǎn)生一個(gè)新數(shù)組)
let arr = [1,2,3,4,5];
let newArray = arr.map((item,index)=> {
return item * 2
});
newArray // [2, 4, 6, 8, 10]
arr // [1,2,3,4,5]
這里返回的是一個(gè)新的數(shù)組,并不會(huì)改變?cè)瓉?lái)數(shù)組。

image
3 reduce (讓數(shù)組中的前項(xiàng)和后項(xiàng)做某種計(jì)算,并累計(jì)最終值)
let arr = [1,2,3,4,5];
let result = arr.reduce((prev, cur, index, arr)=> {
return prev + cur;
});
callbackFunction 包含4個(gè)參數(shù),先解釋下它們的意思:
prev:第一項(xiàng)的值或者上一次疊加的結(jié)果值
cur: 當(dāng)前會(huì)參與疊加的項(xiàng)
index: 當(dāng)前索引
arr: 數(shù)組本身
此時(shí),初始值默認(rèn)為數(shù)組的 [0],如果想自定義初始值,那可以給reduce添加第二個(gè)參數(shù)(initialValue),如下
let result = arr.reduce((prev, cur, index, arr)=> {
return prev + cur;
}, -5);
// 如果是累加,一定要注意 initialValue 的類(lèi)型,如果設(shè)置成了字符串,根據(jù) “兩者相加,值類(lèi)型與第一個(gè)加數(shù)相同”,那么結(jié)果就是一個(gè)字符串。

image
4 filter (篩選處數(shù)組中符合條件的項(xiàng),返回一個(gè)新數(shù)組)
let arr = [1,2,3,4,5];
let newArray = arr.filter((item,index)=> {
return item > 3;
});
newArray // [4,5]

image
5 every (檢測(cè)數(shù)組中的每一項(xiàng)是否符合條件)
可以理解成 && '且'的關(guān)系
let arr = [1,2,3,4,5];
let result = arr.every((item,index)=> {
return item > 0;
});
result // true
6 some (檢測(cè)數(shù)組是否有某些項(xiàng)目符合條件)
可以理解成 || '或'的關(guān)系
let arr = [1,2,3,4,5];
let result = arr.some((item,index)=> {
return item > 2;
});
result // false