1. 程式人生 > 實用技巧 >什麼是 reduce,什麼是聚合函式

什麼是 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)))
}