我有一个这样的数组(每个包含两个以上的键值对,我只使用2个问题)
[{"name":"Joe", "id":17}, {"name":"Bob", "id":17}, {"name":"Carl", "id": 35},{"name":"son", "id": 31},{"name":"smith", "id": 29},{"name":"tom", "id": 35}]
我想像这样设置一个多维对象。 对于每个DISTINC" id"在这个" id"包含" id"," name"价值观。
{
'17' : {
{"name":"Joe",
"id":17},
{"name":"Bob",
"id":17}
},
'35' : {
{"name":"Carl", "id": 35},
{"name":"tom", "id": 35}
},
'31':{"name":"son", "id": 31}
},
'29':{"name":"smith", "id": 29}
}
如你所见,我想分配不同的" id"作为第一个对象的关键
我想我可能会滥用括号,对不起,请在此纠正我。
答案 0 :(得分:2)
答案 1 :(得分:0)
为什么不填充新对象?
var obj = {};
var arr = [{"name":"Joe", "id":17}, {"name":"Bob", "id":17}, {"name":"Carl", "id": 35},{"name":"son", "id": 31},{"name":"smith", "id": 29},{"name":"tom", "id": 35}];
arr.forEach(function(k) {
obj[k.id] = k;
})
答案 2 :(得分:0)
循环数据并将其添加到新对象或附加它,具体取决于它是否已存在。
var data = [{"name":"Joe", "id":17}, {"name":"Bob", "id":17}, {"name":"Carl", "id": 35},{"name":"son", "id": 31},{"name":"smith", "id": 29},{"name":"tom", "id": 35}];
var new_data = {};
for (var i=0; i<data.length; i++)
{
if (new_data.hasOwnProperty(data[i].id))
new_data[data[i].id].push(data[i]);
else
new_data[data[i].id] = [data[i]];
}
document.getElementById("new_data").textContent = JSON.stringify(new_data, null, 4);
&#13;
<pre id="new_data"></pre>
&#13;