I am trying to convert the data object to custom format
This is my data which i want to convert
JavaScript
x
11
11
1
[
2
{ Name: 15, GroupID: 1, Id: 1 },
3
{ Name: 16, GroupID: 1, Id: 1 },
4
{ Name: 17, GroupID: 2, Id: 2 },
5
{ Name: 18, GroupID: 2, Id: 2 },
6
{ Name: 15, GroupID: 3, Id: 3 },
7
{ Name: 16, GroupID: 3, Id: 3 },
8
{ Name: 17, GroupID: 4, Id: 4 },
9
{ Name: 18, GroupID: 4, Id: 4 }
10
];
11
This is what i want to acheive
JavaScript
1
20
20
1
{ GroupID: 1 },
2
3
{ Name: 15, Id: 1 },
4
{ Name: 16, Id: 1 },
5
6
{ GroupID: 2 },
7
8
{ Name: 17, Id: 2 },
9
{ Name: 18, Id: 2 },
10
11
{ GroupID: 3 },
12
13
{ Name: 15, Id: 3 },
14
{ Name: 16, Id: 3 },
15
16
{ GroupID: 4 },
17
18
{ Name: 17, Id: 4 },
19
{ Name: 18, Id: 4 }
20
This is what i have tried till now
JavaScript
1
33
33
1
var data = [
2
{ Name: 15, GroupID: 1, Id: 1 },
3
{ Name: 16, GroupID: 1, Id: 1 },
4
{ Name: 17, GroupID: 2, Id: 2 },
5
{ Name: 18, GroupID: 2, Id: 2 },
6
{ Name: 15, GroupID: 3, Id: 3 },
7
{ Name: 16, GroupID: 3, Id: 3 },
8
{ Name: 17, GroupID: 4, Id: 4 },
9
{ Name: 18, GroupID: 4, Id: 4 }
10
];
11
12
var previousGroupId;
13
var newObject = new Object();
14
for (index in data) {
15
var groupId = data[index].GroupID;
16
if (groupId != previousGroupId) {
17
var newGroup = "GroupId" + groupId;
18
newObject[newGroup] = new Array();
19
for (index in data) {
20
if (data[index].GroupID == groupId) {
21
var customObject = {
22
"GroupID": groupId,
23
"Name": data[index].Name,
24
"Id": data[index].Id
25
};
26
newObject[newGroup].push(customObject);
27
}
28
}
29
}
30
previousGroupId = groupId;
31
}
32
33
console.log(newObject);
even i tried to refer this Javascript group objects by property
any suggestions would be helpful.
Advertisement
Answer
Assuming an array of objects as result set, you could take a hash table with arrays and take a flat array as result set.
JavaScript
1
10
10
1
var data = [{ Name: 15, GroupID: 1, Id: 1 }, { Name: 16, GroupID: 1, Id: 1 }, { Name: 17, GroupID: 2, Id: 2 }, { Name: 18, GroupID: 2, Id: 2 }, { Name: 15, GroupID: 3, Id: 3 }, { Name: 16, GroupID: 3, Id: 3 }, { Name: 17, GroupID: 4, Id: 4 }, { Name: 18, GroupID: 4, Id: 4 }],
2
result = Object
3
.values(data.reduce((r, { Name, GroupID, Id }) => {
4
r[GroupID] = r[GroupID] || [{ GroupID }];
5
r[GroupID].push({ Name, Id });
6
return r;
7
}, {}))
8
.flat();
9
10
console.log(result);
JavaScript
1
1
1
.as-console-wrapper { max-height: 100% !important; top: 0; }