reduce
基本用法
arr.reduce(callback(accumalate,current,index,array),inintValue);
注意点
- arr中的每一项都会去迭代callback;
- callback每一次的返回值,都需要返回,作为累加器给到下一次;
demo
数组累加
const arr = [1,2,3,4];
const count = arr.reduce((acc,currt) => acc + currt),0);
打平数组
const arr = [[1,2],[3,4]];
const flagArr = arr.reduce((acc,currt) => acc.concat(currt), []);
统计数组中每个元素出现的次数
const names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
const computNames = names.reduce((acc,currt) => {
if(currt in acc) {
acc[currt]++;
} else {
acc[currt] = 1;
}
return acc;
},{})
实现reduce
const reduce = (arr,callback, initValue) => {
let result = initValue ? initValue : arr[0];
arr.forEach(item => {
result = callback(result, item);
})
return result;
}