可以使用filter
方法結合indexOf
或includes
來過濾重復的數組對象。
下面是使用filter
和indexOf
的示例代碼:
let arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' },
{ id: 3, name: 'Charlie' },
{ id: 2, name: 'Bob' }
];
let uniqueArr = arr.filter((obj, index, array) => {
return array.findIndex(item => item.id === obj.id) === index;
});
console.log(uniqueArr);
輸出結果為:
[
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
]
使用indexOf
的示例代碼如下:
let arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' },
{ id: 3, name: 'Charlie' },
{ id: 2, name: 'Bob' }
];
let uniqueArr = arr.filter((obj, index, array) => {
return array.indexOf(obj) === index;
});
console.log(uniqueArr);
輸出結果與之前相同。這里使用indexOf
方法來判斷元素在數組中的索引是否與當前索引相同。如果不相同,則表示該元素已經重復出現,應過濾掉。