嗨,我正在尝试从对象数组中删除重复项。但这不能按预期工作。
这是我的数组:
const arr = [{
PData: [{
id: '1',
name: 'Book'
},
{
id: '2',
name: 'Bag'
},
{
id: '2',
name: 'Bag'
},
]
}]
const RemoveDuplicates = (array, key) => {
return array.reduce((arr, item) => {
const removed = arr.filter(i => i[key] !== item[key]);
return [...removed, item];
}, []);
};
var result = RemoveDuplicates(arr, 'id')
console.log(result);
预期输出:
[{
PData: [{
id: '1',
name: 'Book'
},
{
id: '2',
name: 'Bag'
},
]
}]
基于id,它应该删除重复项,但这目前没有发生。.我知道关于此存在一些问题,但对我来说没有任何作用。所以有人请我建议我该怎么做。
答案 0 :(得分:0)
您可以在filter
和id
上使用name
。
const arr = [{
PData: [{
id: '1',
name: 'Book'
},
{
id: '2',
name: 'Bag'
},
{
id: '2',
name: 'Bag'
},
]
}]
arr[0].PData = Object.values(arr[0].PData).filter((v,i,a)=>a.findIndex(t=>(t.id === v.id && t.name=== v.name))===i)
console.log(arr[0].PData);