前言
reduce属于javascript「synchronize 同步」的array method,他就是把一整个array的所有内容,有顺序性的挤压squeeze
最后变成一个值
Reduce表达式
[1,2,3,4].reduce((accumulator, currentValue) => { //call back要做的动作,最后变成一个值 }, initValue)//accumulator = 积累//for迴圈将阵列内容依序一个一个的带进来
Reduce 需要
一个变数一个for迴圈一个初始值reduce 简化版 polyfill
const reduceFunc = (reducer, initVal, dataArray) => { let val = initVal; for(const i in dataArray) { val = reducer(val, dataArray[i]); } return val;}reduceFunc((acc, current) => (acc + current), 0, [1, 2, 3, 4])// 10以上範例是拆解reduce的工作,简单来说一开始先拿到初始值initValue,然后用for迴圈一个一个的带进去reducer(val, dataArray[i]),acc的初始值是initVal接着的每一次for迴圈acc都会是前一次结果的值,过程顺序如下://acc = 0, current = 1, val = 1//acc = 1, current = 2, val = 3//acc = 3, current = 3, val = 6//acc = 6, current = 4, val = 10
本範例来源摘自网路
注意
Reduce不是递迴而是for迴圈