js关于reduce方法以及实现compose
2021-05-28 06:01
标签:text === spec == eve type ota bsp 索引 reduce语法 array.reduce(function(total, currentValue, currentIndex, arr), initialValue); 例子: var params1 = [‘key1‘,‘key2‘,‘key3‘]; 使用reduce实现compose方法: function compose(...funs) { //reverse()反转funs数组,是为了从fun3开始执行,如果想从fun1开始执行,reverse()可以去掉; js关于reduce方法以及实现compose 标签:text === spec == eve type ota bsp 索引 原文地址:https://www.cnblogs.com/wen-web/p/14784361.html
参数
描述
total
必需。初始值, 或者计算结束后的返回值。
currentValue
必需。当前元素
currentIndex
可选。当前元素的索引
arr
可选。当前元素所属的数组对象。
//true 为初始值,即第一次执行reduce时flag的值,return item+1返回的是下一次reduce的flag值
function paramsValidate(params) {
eturn params.reduce((flag, item) => { return item+1 }, true);
//三次执行的过程
//(true, ‘key1‘) => { return ‘key1‘+1 }
//(‘key11‘, ‘key2‘) => { return ‘key2‘+1 }
//(‘key21‘, ‘key3‘) => { return ‘key3‘+1 }
}
return (args) => {
if (funs.length === 0) {
return args;
}
if (funs.length === 1) {
return funs[0](args);
}
return funs.reverse().reduce((x,y)=>{
return typeof x == ‘function‘? y(x(args)):y(x);
});
}
}
compose(fun1,fun2,fun3)(value);
//执行结果等于fun1(fun2(fun3(value)));
//(fun1,fun2,fun3)为参数...funs,value为参数args
文章标题:js关于reduce方法以及实现compose
文章链接:http://soscw.com/index.php/essay/88542.html