返回具有匹配id的对象,但在一个示例中



我有一个对象数组。我只想检查对象的id是否相同,并返回那个特定的对象,没有重复。

的例子。

let arr1 = [
{id: 1, name: 'A'},
{id: 3, name: 'C'},
{id: 1, name: 'A'},
{id: 2, name: 'B'},
{id: 2, name: 'B'}
]

result I want:

let newArr = [
{id: 1, name: 'A'},
{id: 2, name: 'B'}
]

result I get:

let arr1 = [
{id: 1, name: 'A'},
{id: 3, name: 'C'},
{id: 2, name: 'B'}
]

我试着:

arr1.reduce((destArray, obj) => {
if (destArray.findIndex(i => i.id === obj.id) < 0) {
return destArray.concat(obj);
} else {
return destArray;
}
}, [])

作为结果,我得到的对象与匹配的id,但也有对象与唯一的id。但是我不需要它们。

const newArr = arr1.filter((obj, index, self) => {
return self.findIndex(i => i.id === obj.id) === index && self.lastIndexOf(i => i.id === obj.id) !== index;
});

最新更新