微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

js对象数组(JSON) 根据某个共同字段 分组

<div class="cnblogs_code">

[
{
"id":"1001","name":"值1","value":"111"<span style="color: #000000">},{"id":"1001","value":"11111"<span style="color: #000000">},{"id":"1002","name":"值2","value":"25462"<span style="color: #000000">},"value":"23131"<span style="color: #000000">},"value":"2315432"<span style="color: #000000">},{"id":"1003","name":"值3","value":"333333"<span style="color: #000000">}
]
根据相同id字段分组,转换成下面这种形式:

[
{
"id": "1001"<span style="color: #000000">,"name": "值1"<span style="color: #000000">,"data"<span style="color: #000000">: [
{"id": "1001","name": "值1","value": "111"<span style="color: #000000">},{ "id": "1001","value": "11111"<span style="color: #000000">}
]
},{
"id": "1002"<span style="color: #000000">,"name": "值2"<span style="color: #000000">,"data"<span style="color: #000000">: [
{ "id": "1002","name": "值2","value": "25462"<span style="color: #000000"> },{ "id": "1002","value": "23131"<span style="color: #000000">},{"id": "1002","value": "2315432"<span style="color: #000000"> }
]
},{
"id": "1003"<span style="color: #000000">,"name": "值3"<span style="color: #000000">,"data"<span style="color: #000000">: [
{"id": "1003","name": "值3","value": "333333"<span style="color: #000000"> }
]
}
]
做法:

<span style="color: #0000ff">var arr =<span style="color: #000000"> [
{"id":"1001","value":"333333"<span style="color: #000000">}
];

<span style="color: #0000ff">var map =<span style="color: #000000"> {},dest =<span style="color: #000000"> [];
<span style="color: #0000ff">for(<span style="color: #0000ff">var i = 0; i < arr.length; i++<span style="color: #000000">){
<span style="color: #0000ff">var ai =<span style="color: #000000"> arr[i];
<span style="color: #0000ff">if(!<span style="color: #000000">map[ai.id]){
dest.push({
id: ai.id,name: ai.name,data: [ai]
});
map[ai.id] =<span style="color: #000000"> ai;
}<span style="color: #0000ff">else<span style="color: #000000">{
<span style="color: #0000ff">for(<span style="color: #0000ff">var j = 0; j < dest.length; j++<span style="color: #000000">){
<span style="color: #0000ff">var dj =<span style="color: #000000"> dest[j];
<span style="color: #0000ff">if(dj.id ==<span style="color: #000000"> ai.id){
dj.data.push(ai);
<span style="color: #0000ff">break<span style="color: #000000">;
}
}
}
}

console.log(dest);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐