我想在将匹配的(已存在的)对象 ID 中的重复对象 ID 分组后,从数组中删除重复的对象。 无论我尝试过什么,都是对 ID 进行分组,但不知道如何从数组中删除重复的对象。
原始数组
[
{id:2,title:'men'},
{id:3,title:'women'},
{id:1,title:'kids'},
{id:4,title:'sports'},
{id:5, title:'women'},
{id:6,title:'kids'}
];
预期数组
[
{ id: 2, title: 'men' },
{ id: [3,5], title: 'women' },
{ id: [1,6], title: 'kids' },
{ id: 4, title: 'sports' }
]
尝试过
let array = [{id:2,title:'men'},{id:3,title:'women'},{id:1,title:'kids'},
{id:4,title:'sports'}, {id:5, title:'women'},{id:6,title:'kids'}];
for(let i=0; i<array.length-1;i++){
for(let j=i+1; j<array.length; j++){
if(array[i].title===array[j].title)
array[i]={id:[array[i].id, array[j].id], title: array[i].title}
}
}
console.log(array)
请帮助以更好的方式达到预期结果。
最佳答案
let items = [{
id: 2,
title: 'men'
},
{
id: 3,
title: 'women'
},
{
id: 1,
title: 'kids'
},
{
id: 4,
title: 'sports'
},
{
id: 5,
title: 'women'
},
{
id: 6,
title: 'kids'
}
];
let dest = [];
items.forEach(x => {
let find;
if (find = dest.find(y => y.title === x.title)) {
find.id = Array.isArray(find.id) ? [...find.id, x.id] : [find.id, x.id]
} else {
dest.push(x)
}
})
console.log(dest)
关于javascript - 如何使用 javascript 对重复对象的 ID 进行分组并删除数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67750064/