什么是 reduce,什么是聚合函数

什么是 reduce

reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值

const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10

// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15

什么是聚合函数

如下函数,聚合成一个函数,并把第一个函数的返回值传递给下一个函数。

function f1(arg) {
 console.log("f1", arg);
 return arg; 
}
function f2(arg) {
 console.log("f2", arg);
 return arg;
}
function f3(arg) {
 console.log("f3", arg);
 return arg;
}
// 方法1:
let res = f1(f2(f3('name')))
console.log('res', res)
// 结果:
// f3 name
// f2 name
// f1 name
// res name
// 方法2:
let res = compose(f1, f2, f3)('name')
console.log('res', res)
// 结果:
// f3 name
// f2 name
// f1 name
// res name
function compose(...funcs) {
  // 处理如果没有传递参数
  if(funcs.length === 0) return arg =>  arg
  return funcs.reduce((a, b) => (...args) => a(b(...args)))
}
posted @ 2020-10-27 14:31  渡心°  阅读(633)  评论(0编辑  收藏  举报