Array.prototype.reduce()

reduce() 方法接收一個函數做爲累加器(accumulator),數組中的每一個值(從左到右)開始縮減,最終爲一個值。

reduce 爲數組中的每個元素依次執行回調函數,不包括數組中被刪除或從未被賦值的元素,接受四個參數:初始值(或者上一次回調函數的返回值),當前元素值,當前索引,調用 reduce 的數組。javascript

語法:

arr.reduce(callback,[initialValue])
  • callback (執行數組中每一個值的函數,包含四個參數)
    1. previousValue (上一次調用回調返回的值,或者是提供的初始值(initialValue))java

    2. currentValue (數組中當前被處理的元素)數組

    3. index (當前元素在數組中的索引)dom

    4. array (調用 reduce 的數組)koa

  • 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對象。code

var a = {
    env : 'development',
    proxy : false,
    subdomainOffset : 2
}
only(a,['env','proxy'])   // {env:'development',proxy : false}
相關文章
相關標籤/搜索