【发布时间】:2017-03-26 06:15:48
【问题描述】:
我想做这个用户想做的几乎完全相同的事情:Underscore.js: create a map out of list of objects using a key found in the object
只有...
- 我不想使用下划线库或 jQuery。只是普通的旧JS。
- 我不希望我的对象键是字符串
所以如果我有这样的对象 -
var some_object_array = [{id: 1, val: 55}, {id: 2, val: 1}, {id: 3, val: 45}];
我想把它转换成 -
var some_map = {1: {id: 1, val: 55}, 2: {id: 2, val: 1}, 3: {id: 3, val: 45}};
另外,如果这是一个愚蠢的问题,我深表歉意。我是 JS 的新手,在过去的两个小时里我一直在试图解决这个问题并不断得到错误的结果。我设法返回了一个如下所示的对象:
{ '1': [ { id: 1, val: 55 } ],
'2': [ { id: 2, val: 1 } ],
'3': [ { id: 3, val: 45 } ] }
我的代码:
var some_object_array = [ {id: 1, val: 55},
{id: 2, val: 1},
{id: 3, val: 45}
];
function groupBy(array, callback) {
return array.reduce(function (result, item) {
var key = callback(item);
result[key] = item[key] || [];
result[key].push(item);
return result;
}, {});
}
console.log(groupBy(some_object_array, function(i) { return i.id; }));
不太对。我的内部对象在数组中,我的键被转换为字符串。不足为奇,但我只是不知道如何修改我的代码。
【问题讨论】:
标签: javascript object