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