Array.prototype.reduce()

reduce() 要领吸收一个函数作为累加器(accumulator),数组中的每一个值(从左到右)最先缩减,终究为一个值。

reduce 为数组中的每一个元素顺次实行回调函数,不包括数组中被删除或从未被赋值的元素,接收四个参数:初始值(或许上一次回调函数的返回值),当前元素值,当前索引,挪用 reduce 的数组。

语法:

arr.reduce(callback,[initialValue])
  • callback (实行数组中每一个值的函数,包括四个参数)
    1. previousValue (上一次挪用回调返回的值,或许是供应的初始值(initialValue))

    2. currentValue (数组中当前被处置惩罚的元素)

    3. index (当前元素在数组中的索引)

    4. 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}
    原文作者:krew
    原文地址: https://segmentfault.com/a/1190000004167112
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞