JavaScript reduce() 方法的使用详解及技巧

reduce() 为数组中的每一个元素依次 执行回调函数,不包括数组中被删除的元素或者未赋值的元素,接受四个参数:初始值(或者上次回调函数的返回值),当前元素值,当前索引,调用reduce的数组.
语法

arr.reduce(callback,[initialValue])

callback (执行数组中每个值的函数,包含四个参数)
previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
currentValue (数组中当前被处理的元素)
index (当前元素在数组中的索引)
array (调用 reduce 的数组)
initialValue (作为第一次调用 callback 的第一个参数。)

使用
数组元素累加

  var items = [10, 120, 1000];

// our reducer function
var reducer = function add(sumSoFar, item) { return sumSoFar + item; };

// do the job
var total = items.reduce(reducer, 0);

console.log(total); // 1130

得到一串字符串中每个字母出现的次数

var arrString = 'abcdaabc';

arrString.split('').reduce(function(res, cur) {
    res[cur] ? res[cur] ++ : res[cur] = 1
    return res;
}, {})

过滤对象中指定的属性值

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; //如果对象obj中存在key 字段,则赋值给ret 否则直接返回
    ret[key] = obj[key];
    return ret;
  }, {});
};

var a = {
    env : 'development',
    proxy : false,
    subdomainOffset : 2
}
only(a,['env','proxy'])   // {env:'development',proxy : false}

你可能感兴趣的:(JavaScript reduce() 方法的使用详解及技巧)