reduce 爲數組中的每個元素依次執行回調函數,不包括數組中被刪除或從未被賦值的元素,接受四個參數:初始值(或者上一次回調函數的返回值),當前元素值,當前索引,調用 reduce 的數組。javascript
arr.reduce(callback,[initialValue])
previousValue (上一次調用回調返回的值,或者是提供的初始值(initialValue))java
currentValue (數組中當前被處理的元素)數組
index (當前元素在數組中的索引)dom
array (調用 reduce 的數組)koa
今天在看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}