我有以下内容:
var new = {};
old.forEach(function (u) { new[u.id] = u.name; });
有人可以向我解释如何使用lodash附带的_.forEach实现此目的。
答案 0 :(得分:1)
我认为lodash总是产生一个输出,我将不得不使用它。
不,这实际上取决于功能。 _.forEach
只是迭代集合的元素。即使它 返回一个值,它也只是你作为第一个参数传递的集合。
所以我认为它更像是:
var new = _.foreach( ..
有没有办法做到这一点,还是我总是需要做new[u.id}
?
您可以使用_.reduce
,但我个人认为它不比您的版本更具可读性,因为其意图并不明确:
var newObj = _.reduce(old, function(obj, v) {
obj[v.id] = v.name;
return obj; // or in one line: return obj[v.id] = v.name, obj;
}, {});
理想情况下,你会使用类似_.map
的东西,这样可以使意图更加清晰,但是你不能将数组从一个数组映射到一般的对象,并且你不能使用lodash从一个对象映射到一个对象(因为它似乎)。