i want to create a new array from api, but i don’t know how to make it, i’m very confused in looping each array
This is each data
JavaScript
x
42
42
1
const group_one = [
2
{
3
name: "smash",
4
id: "012112"
5
},
6
{
7
name: "ahlan wa sahlan",
8
id: "123123"
9
},
10
{
11
name: "ahh",
12
id: "1231239"
13
},
14
{
15
name: "laki",
16
id: "21312"
17
}
18
];
19
20
const group_two = [
21
{
22
name: "ahh",
23
id: "1231239"
24
},
25
{
26
name: "laki",
27
id: "21312"
28
}
29
];
30
31
const group_three = [
32
{
33
name: "smash",
34
id: "012112"
35
},
36
{
37
name: "ahlan wa sahlan",
38
id: "123123"
39
}
40
];
41
42
this is the main data of api
JavaScript
1
16
16
1
const data = [
2
{
3
body: group_one,
4
group_id: "01"
5
},
6
{
7
body: grouop_two,
8
group_id: "02"
9
},
10
{
11
body: group_three,
12
group_id: "03"
13
}
14
];
15
export default data;
16
i want to create a new array like this, bcs i want to create a new object containing the group_id of each same data in the array
JavaScript
1
23
23
1
const newArray = [
2
{
3
name: "smash",
4
id: "012112",
5
group_id: ["01","03"]
6
},
7
{
8
name: "ahlan wa sahlan",
9
id: "123123",
10
group_id: ["01","03"]
11
},
12
{
13
name: "ahh",
14
id: "1231239",
15
group_id: ["01","02"]
16
},
17
{
18
name: "laki",
19
id: "21312",
20
group_id: ["01","02"]
21
}
22
];
23
can someone help me? with articles or codes. thanks for helping me (sry for my bad english)
Advertisement
Answer
Please see below commented code:
JavaScript
1
80
80
1
const group01 = [
2
{
3
name: 'smash',
4
id: '012112'
5
},
6
{
7
name: 'ahlan wa sahlan',
8
id: '123123'
9
},
10
{
11
name: 'ahh',
12
id: '1231239'
13
},
14
{
15
name: 'laki',
16
id: '21312'
17
}
18
];
19
20
const group02 = [
21
{
22
name: 'ahh',
23
id: '1231239'
24
},
25
{
26
name: 'laki',
27
id: '21312'
28
}
29
];
30
31
const group03 = [
32
{
33
name: 'smash',
34
id: '012112'
35
},
36
{
37
name: 'ahlan wa sahlan',
38
id: '123123'
39
}
40
];
41
42
const data = [
43
{
44
body: group01,
45
group_id: '01'
46
},
47
{
48
body: group02,
49
group_id: '02'
50
},
51
{
52
body: group03,
53
group_id: '03'
54
}
55
];
56
57
function regroup(input) {
58
// USE Map FOR EASIER ITEM HANDLING.
59
const output = new Map();
60
61
// LOOP MAIN DATA ARRAY.
62
input.forEach(({body, group_id}) => {
63
// LOOP EACH GROUP.
64
body.forEach(({name, id}) => {
65
// USE id TO GET AN ITEM FROM output OR CREATE A NEW ONE IF IT DOES NOT EXIST.
66
const item = output.get(id) || {name, id, group_id: []};
67
// PUSH CURRENT group_id TO THE RESPECTIVE ARRAY.
68
item.group_id.push(group_id);
69
// SAVE ITEM TO OUTPUT Map AGAIN.
70
output.set(id, item);
71
});
72
});
73
74
// RETURN OUTPUT.
75
return Array.from(output.values());
76
}
77
78
const new_data = regroup(data);
79
80
console.log(new_data);