我有以下代码:
$scope.option.cityMap = data.reduce(function (rv, v) {
rv[v.cityId] = v;
return rv;
}, {});
有人可以告诉我如何使用 _.lodash forEach 来实现这一点吗?我已经查看了文档,但我不确定如何实现回调函数,因此它创建了一个数组。
$scope.option.cityMap = _.forEach(data,
最佳答案
使用函数式助手,所有解决方案的效率都低于“命令式”:
var cityMap = {};
var len = data.length;
for (var i = 0; i < len; i++) {
cityMap[data[i].cityId] = data[i];
}
// return cityMap;
如果性能确实是一个问题,请从上面创建一个函数。如果从外部看(数据输入、数据输出,没有副作用),它是纯粹且实用的。
您还可以使用_.zipObject
:
var cityMap = _(data).map(data, function (v) {
return [v.cityId, v];
}).zipObject().value();
或reduce
,由于我们没有复制累加器 rv
(某种意义上是作弊),因此它也应该非常高效。
var cityMap = _.reduce(data, function (rv, v) {
rv[v.cityId] = v;
return rv;
}, {});
关于javascript - 如何在 lodash forEach 中创建回调函数来填充数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21450360/