我正在使用优秀的Underscore.js库。我有一个特定的任务,我可以使用JavaScript或jQuery很好地完成,但我想知道下划线中是否有某种我遗漏的抽象。
从本质上讲,我有一个这样的对象-
var some_object_array = [{id: "a", val: 55}, {id: "b", val: 1}, {id: "c", val: 45}];
我想把它转换成-
var some_map = {"a": {id: "a", val: 55}, "b": {id: "b", val: 1}, "c": {id: "c", val: 45}};
我知道我可以使用_.groupBy(some_object_array, "id")
。但是这会返回一个这样的地图-
var some_grouped_map = {"a": [{id: "a", val: 55}], "b": [{id: "b", val: 1}], "c": [{id: "c", val: 45}]};
请注意,这做了广告所要做的事情。但我希望自己不用遍历对象就能得到some_map
。
感谢您的帮助。
发布于 2012-10-12 12:01:24
值得注意的是,既然是underscore.js,现在就可以使用_.object()
了
var some_map = _.object(_.map(some_object_array, function(item) {
return [item.id, item]
}));
发布于 2014-06-02 20:43:46
对于您的情况,您应该使用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');
发布于 2012-10-09 05:58:26
还有一种方法
_.reduce(data, function (o, item) { o[item.key] = item.value; return o }, {})
这是内部函数中的一条语句和两条语句。
https://stackoverflow.com/questions/10416424
复制相似问题