reduce() 要领吸收一个函数作为累加器(accumulator),数组中的每一个值(从左到右)最先缩减,终究为一个值。
reduce 为数组中的每一个元素顺次实行回调函数,不包括数组中被删除或从未被赋值的元素,接收四个参数:初始值(或许上一次回调函数的返回值),当前元素值,当前索引,挪用 reduce 的数组。
语法:
arr.reduce(callback,[initialValue])
callback (实行数组中每一个值的函数,包括四个参数)
previousValue (上一次挪用回调返回的值,或许是供应的初始值(initialValue))
currentValue (数组中当前被处置惩罚的元素)
index (当前元素在数组中的索引)
array (挪用 reduce 的数组)
initialValue (作为第一次挪用 callback 的第一个参数。)
本日在看koa的源码,看到个中用到个only模块,去看了一下该模块,全部模块就一个简朴的返回reduce要领操纵的对象:
var only = function(obj, keys){
obj = obj || {};
if ('string' == typeof keys) keys = keys.split(/ +/);
return keys.reduce(function(ret, key){
if (null == obj[key]) return ret;
ret[key] = obj[key];
return ret;
}, {});
};
经由过程对reduce观点的明白,这个模块主如果想新建并返回一个obj对象中存在的keys的object对象。
var a = {
env : 'development',
proxy : false,
subdomainOffset : 2
}
only(a,['env','proxy']) // {env:'development',proxy : false}