js去重数组中对象相同的值
时间: 2023-05-04 10:02:47 浏览: 218
js代码-数组 对象去重 (对象的所有属性相同才能认为相同)
在JavaScript中,可以使用reduce()和findIndex()方法来去除数组中对象相同的值。首先,通过reduce()方法遍历整个数组,将每个对象的属性值合并为一个字符串,然后使用findIndex()方法在新数组中查找是否已经存在相同字符串。如果没有找到,则将该字符串添加到新数组中,否则忽略该对象。
以下是一个示例代码:
```
const arr = [{ id: 1, name: 'apple' }, { id: 2, name: 'banana' }, { id: 1, name: 'apple' }];
const result = arr.reduce((acc, cur) => {
const stringified = JSON.stringify(cur); // 将对象转换为字符串
const exists = acc.findIndex(item => JSON.stringify(item) === stringified); // 判断是否已存在
if (exists === -1) {
acc.push(cur);
}
return acc;
}, []);
console.log(result); // [{ id: 1, name: 'apple' }, { id: 2, name: 'banana' }]
```
在上面的代码中,我们使用JSON.stringify()将每个对象转换为字符串,以便后续比较。然后使用findIndex()方法,在新数组中查找是否已包含相同的字符串。如果已经存在相同的字符串,则返回该元素所在的位置,否则返回-1。最后,如果该元素不存在,则将其添加到新数组中。最后,返回新数组即可。
该方法可以很好地去除数组中对象相同的值,并返回一个去重后的新数组。
阅读全文