I want to remove duplicate object from array after grouping duplicate object id from matched(already existing) object id. Whatever i have tried that’s grouping ID’s but not getting how to remove duplicate object from array.
Original Array
JavaScript
x
9
1
[
2
{id:2,title:'men'},
3
{id:3,title:'women'},
4
{id:1,title:'kids'},
5
{id:4,title:'sports'},
6
{id:5, title:'women'},
7
{id:6,title:'kids'}
8
];
9
Expected Array
JavaScript
1
7
1
[
2
{ id: 2, title: 'men' },
3
{ id: [3,5], title: 'women' },
4
{ id: [1,6], title: 'kids' },
5
{ id: 4, title: 'sports' }
6
]
7
Tried
JavaScript
1
11
11
1
let array = [{id:2,title:'men'},{id:3,title:'women'},{id:1,title:'kids'},
2
{id:4,title:'sports'}, {id:5, title:'women'},{id:6,title:'kids'}];
3
4
for(let i=0; i<array.length-1;i++){
5
for(let j=i+1; j<array.length; j++){
6
if(array[i].title===array[j].title)
7
array[i]={id:[array[i].id, array[j].id], title: array[i].title}
8
}
9
}
10
console.log(array)
11
Please help to achieve expected result in better way.
Advertisement
Answer
JavaScript
1
38
38
1
let items = [{
2
id: 2,
3
title: 'men'
4
},
5
{
6
id: 3,
7
title: 'women'
8
},
9
{
10
id: 1,
11
title: 'kids'
12
},
13
{
14
id: 4,
15
title: 'sports'
16
},
17
{
18
id: 5,
19
title: 'women'
20
},
21
{
22
id: 6,
23
title: 'kids'
24
}
25
];
26
27
let dest = [];
28
29
items.forEach(x => {
30
let find;
31
if (find = dest.find(y => y.title === x.title)) {
32
find.id = Array.isArray(find.id) ? [find.id, x.id] : [find.id, x.id]
33
} else {
34
dest.push(x)
35
}
36
})
37
38
console.log(dest)