reduce基本用法

336 阅读1分钟

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;
}