理解 ES6 — reduce/map/forEach

前言

不廢話(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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容