在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;
}
答案 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用于生成数组中所选元素的数组。