使用累加器映射到对象

时间:2014-07-03 15:26:06

标签: javascript lodash

在lodash中,mapToObject是否有更惯用的方式?

var accumulator = {};
_.map([1, 2, 3], function (number) {
    accumulator[number] = number + 1;
});

// {1: 2, 2: 3, 3: 4}

有没有办法在没有为map函数明确提供累加器的情况下执行此操作?

_.mapToObject([1, 2, 3], function (accumulator, number) { 
    return accumulator[number] = number + 1;
}

1 个答案:

答案 0 :(得分:4)

那是.reduce()的用途:

var accumulator = 
  _.reduce([1, 2, 3], function(acc, num) { acc[num] = num + 1; return acc; }, {});

在现代浏览器中,Array原型上的原生.reduce()与lodash和Underscore提供的版本大致相同。

.map() API用于从现有阵列创建新阵列。如果您只想对数组的每个元素执行某些操作,请使用.forEach().filter() API用于生成数组中所选元素的数组。