前两天在群里看到一道题,折腾半天没做出来。今天查了查,了解了前因后果,在此整理记录一下。之前都没怎么重视过reduce方法,后来发现它能做的事情还挺多的。
参考资料:
数组的reduce方法
数组的reduce方法相比其他的方法要复杂一些,但理解之后也不难,用法如下:
array.reduce((accumulator, item, index, array) => {
// do something...
}, initialValue)
reduce方法能够对数组使用,他接受两个参数,第一个参数是个函数fn
,第二个参数initialValue
为可选参数,表示累加器的初始值。
而fn
中有4个参数,其参数的值会被initialValue
存在与否所影响:
- 当
initialValue
存在
参数为:
accumulator
: 累加器,初始值为initialValue
的值item
:数组的当前项,从第0项开始index
:数组的当前项对应的下标,从0开始array
:数组本身
- 而当
initialValue
不存在
参数为:
accumulator
: 累加器,初始值为数组第0项item
:数组的当前项,因为accumulator
为第0项,所以这里从1开始index
:数组的当前项对应的下标,从1开始array
:数组本身
简单的用例:
//
[0, 1, 2, 3, 4].reduce(function(accumulator, item){
return accumulator + item;
});
compose组合函数
题目:
const fn1 = x => x+1;
const fn2 = x => x+2;
const fn3 = x =>