理解-ES6-—-reduce-map-forEach

前言

不廢話,直接上正題。數組

1 forEach (讓數組中的每一項都作一件事)

若是不作特殊處理,通常狀況下,不會break的。若是須要中途跳出循環,建議直接用for語句好了。ui

let arr = [1,2,3,4,5];
arr.forEach((item,index)=> {
    console.log(item);
})
// 1,2,3,4,5
複製代碼

forEach

2 map (讓數組經過某種計算產生一個新數組)
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]
複製代碼

這裏返回的是一個新的數組,並不會改變原來數組。spa

map

3 reduce (讓數組中的前項和後項作某種計算,並累計最終值)
let arr = [1,2,3,4,5];
let result = arr.reduce((prev, cur, index, arr)=> {
    return prev + cur;
});
複製代碼

callbackFunction 包含4個參數,先解釋下它們的意思:code

prev:第一項的值或者上一次疊加的結果值 cur: 當前會參與疊加的項 index: 當前索引 arr: 數組自己cdn

此時,初始值默認爲數組的 [0],若是想自定義初始值,那能夠給reduce添加第二個參數(initialValue),以下blog

let result = arr.reduce((prev, cur, index, arr)=> {
    return prev + cur;
}, -5);
// 若是是累加,必定要注意 initialValue 的類型,若是設置成了字符串,根據 「二者相加,值類型與第一個加數相同」,那麼結果就是一個字符串。
複製代碼

reduce

4 filter (篩選處數組中符合條件的項,返回一個新數組)
let arr = [1,2,3,4,5];
let newArray = arr.filter((item,index)=> {
    return item > 3;
});
 newArray // [4,5]
複製代碼

filter

5 every (檢測數組中的每一項是否符合條件)

能夠理解成 && '且'的關係索引

let arr = [1,2,3,4,5];
let result = arr.every((item,index)=> {
    return item > 0;
});
 result  // true
複製代碼
6 some (檢測數組是否有某些項目符合條件)

能夠理解成 || '或'的關係字符串

let arr = [1,2,3,4,5];
let result = arr.some((item,index)=> {
    return item > 2;
});
 result  // true
複製代碼
相關文章
相關標籤/搜索