映射到带有累加器的对象



在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;
}

这就是.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是用来创建一个数组的选定元素的数组。

最新更新