Cha*_*ntz 59 javascript javascript-objects underscore.js
我正在使用优秀的Underscore.js库.我有一个特定的任务,我可以使用JavaScript或jQuery做得很好但是想知道在Underscore中是否有某种抽象可以让我错过了.
基本上我有一个像这样的对象 -
var some_object_array = [{id: "a", val: 55}, {id: "b", val: 1}, {id: "c", val: 45}];
Run Code Online (Sandbox Code Playgroud)
我想把它转换成 -
var some_map = {"a": {id: "a", val: 55}, "b": {id: "b", val: 1}, "c": {id: "c", val: 45}};
Run Code Online (Sandbox Code Playgroud)
我知道我可以用_.groupBy(some_object_array, "id").但这会返回如此的地图 -
var some_grouped_map = {"a": [{id: "a", val: 55}], "b": [{id: "b", val: 1}], "c": [{id: "c", val: 45}]};
Run Code Online (Sandbox Code Playgroud)
请注意,这会做广告宣传的内容.但是我希望自己some_map不用迭代对象.
任何帮助赞赏.
cle*_*tus 89
FWIW因为你现在可以使用underscore.js了 _.object()
var some_map = _.object(_.map(some_object_array, function(item) {
return [item.id, item]
}));
Run Code Online (Sandbox Code Playgroud)
小智 47
对于您的情况,您应该使用该indexBy功能:
var some_object_array = [{id: "a", val: 55}, {id: "b", val: 1}, {id: "c", val: 45}];
var some_grouped_map = _.indexBy(some_object_array, 'id');
Run Code Online (Sandbox Code Playgroud)
Ott*_*ger 31
还有这种方法
_.reduce(data, function (o, item) { o[item.key] = item.value; return o }, {})
Run Code Online (Sandbox Code Playgroud)
哪个是内部函数中有两个语句的语句.
小智 13
我不认为有什么比groupBy更接近你的需求.即使有,它也不会比简单更好:
var some_map = {};
_.each(some_object_array, function(val) {
some_map[val.id] = val;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56239 次 |
| 最近记录: |