Reputation: 600
Please help to figure out how can I group and display JSON objects. Here's my example:
var result = [
{
"data":
[{
"id": 1,
"name": "aaa"
}]
},
{
"data":
[{
"id": 2,
"name": "bbb"
}]
},
{
"data":
[{
"id": 1,
"name": "cccc"
}]
},
{
"data": [{
"id": 3,
"name": "ddd"
}]
},
{
"data": [{
"id": 2,
"name": "eee"
}]
},
{
"data":
[{
"id": 3,
"name": "fff"
}]
}
]
I want to group the name which have the same id using jQuery. Hope you can help me to solve this issue. I would be very thankful for this.
Thank you in advance!
Upvotes: 0
Views: 2796
Reputation: 32354
var result = [
{
"data":
[{
"id": 1,
"name": "aaa"
}]
},
{
"data":
[{
"id": 2,
"name": "bbb"
}]
},
{
"data":
[{
"id": 1,
"name": "cccc"
}]
},
{
"data": [{
"id": 3,
"name": "ddd"
}]
},
{
"data": [{
"id": 2,
"name": "eee"
}]
},
{
"data":
[{
"id": 3,
"name": "fff"
}]
}
];
var groups={};
$.each(result,function(key,val){
$.each(val.data,function(k,v){
var id = v.id;
if(groups[id]){
groups[id]['name'].push(v.name);
}else{
groups[id] = {};
groups[id]['name'] = [];
groups[id]['name'].push(v.name);
groups[id]['id'] = v.id;
}
});
});
console.log(groups);
jsfiddle: http://jsfiddle.net/jm3kr12w/1/
Upvotes: 1
Reputation: 2210
try this
var result = [
{
"data":
[{
"id": 1,
"name": "aaa"
}]
},
{
"data":
[{
"id": 2,
"name": "bbb"
}]
},
{
"data":
[{
"id": 1,
"name": "cccc"
}]
},
{
"data": [{
"id": 3,
"name": "ddd"
}]
},
{
"data": [{
"id": 2,
"name": "eee"
}]
},
{
"data":
[{
"id": 3,
"name": "fff"
}]
}
]
var tempArray = []
for(var i=0;i<result.length;i++)
{
var o = null;
var index = -1;
for (var j = 0; j <tempArray.length; j++) {
if (stackMethods.tempArray[j].Id == result[i].data[0].id) {
index = j;
o =tempArray[j];
break;
}
}
if(o!=null)
{
o.Names.push(result[i].data[0].name);
tempArray[index] = o;
}
else {
o = {};
o.Id = result[i].data[0].id;
o.Names = [];
o.Names.push(result[i].data[0].name);
tempArray.push(o);
}
}
Upvotes: 0
Reputation: 3373
Try this. Hope will work for you.
var groups = {};
$.each(result,function(key,val){
var data=val.data;
$.each(data,function(k,v){
var id = v.id;
if(groups[id]){
groups[id].push(v);
}else{
groups[id] = [];
groups[id].push(v);
}
});
});
console.log(groups);
Output
{
"1": [
{
"id": 1,
"name": "aaa"
},
{
"id": 1,
"name": "cccc"
}
],
"2": [
{
"id": 2,
"name": "bbb"
},
{
"id": 2,
"name": "eee"
}
],
"3": [
{
"id": 3,
"name": "ddd"
},
{
"id": 3,
"name": "fff"
}
]
}
Upvotes: 0