I am trying to group my array by Id in jQuery, the details of my code and what I am trying to achieve.
My array is something like this:
var array = [
{id:1, value:1},
{id:1, value:2},
{id:1, value:3},
{id:2, value:4},
{id:2, value:5},
{id:2, value:6},
{id:3, value:7},
{id:3, value:8},
{id:3, value:1},
{id:4, value:2},
{id:4, value:3},
{id:4, value:4},
{id:6, value:5},
{id:6, value:1},
{id:6, value:2},
{id:12, value:3},
{id:12, value:4},
{id:12, value:5},
{id:1, value:"a"},
{id:1, value:"b"},
{id:1, value:"c"},
{id:2, value:4},
{id:2, value:5},
];
desired result should be
var output = [
{
id:1,
group:[
{value:1},
{value:2},
{value:3},
]
},
{
id:2,
group:[
{value:4},
{value:5},
{value:6},
]
},
{
id:3,
group:[
{value:7},
{value:8},
{value:1},
]
},
{
id:4,
group:[
{value:2},
{value:3},
{value:4},
]
},
{
id:6,
group:[
{value:5},
{value:1},
{value:2},
]
},
{
id:12,
group:[
{value:3},
{value:4},
{value:5},
]
},
{
id:1,
group:[
{value:a},
{value:b},
{value:c},
]
}
{
id:2,
group:[
{value:4},
{value:5}
]
}
];
Is there a helpful script for this, or should I stick to using js, and then looping through the resulting object to do the myself?
I'm trying:
var array1 = [
{id:1, value:1},
{id:1, value:2},
{id:1, value:3},
{id:2, value:4},
{id:2, value:5},
{id:2, value:6},
{id:3, value:7},
{id:3, value:8},
{id:3, value:1},
{id:4, value:2},
{id:4, value:3},
{id:4, value:4},
{id:6, value:5},
{id:6, value:1},
{id:6, value:2},
{id:12, value:3},
{id:12, value:4},
{id:12, value:5},
{id:1, value:"a"},
{id:1, value:"b"},
{id:1, value:"c"},
{id:2, value:4},
{id:2, value:5},
];
var FinalArray=[];
for(i=0;i<array1.length;i++)
{
var newArray={id:array1[i].id,group:{value:[]}};
var group={value:[]};
newArray.group=group;
if(newArray.id == array1[i].id){
for(j=i;j<array1.length;j++)
{
if(array1[i].id==array1[j].id)
{
group.value.push(array1[j].value);
}
}
}
var IsAddeble=true;
if(FinalArray.length>0)
{
for(k=0;k<FinalArray.length;k++)
{
if(FinalArray[FinalArray.length-1].id==array1[i].id)
{
IsAddeble=false;
}
}
}
if(IsAddeble){
FinalArray.push(newArray);
}
}
console.log(FinalArray);