对象数组去重方法
方法一:使用Set集合
使用Set集合的特性可以实现对象数组的去重。Set是ES6中新增的一种数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。
```javascript
const arr = [{id: 1, name: 'Tom'}, {id: 2, name: 'Jerry'}, {id: 1, name: 'Tom'}];
const newArr = [...new Set(arr.map(JSON.stringify))].map(JSON.parse);
console.log(newArr);
```
上述代码中,首先使用`map`方法将对象数组转换为字符串数组,然后使用`Set`构造函数将字符串数组转换为Set集合,Set集合会自动去重。最后,使用扩展运算符`[...]`将Set集合转换为数组,并通过`map`方法将字符串数组转换为对象数组。
方法二:使用reduce函数
可以使用`reduce`函数来实现对象数组的去重。`reduce`函数是数组的一个方法,它将一个数组(或类似数组的对象)的每个元素按照从左到右进行累积。
```javascript
filter过滤对象数组const arr = [{id: 1, name: 'Tom'}, {id: 2, name: 'Jerry'}, {id: 1, name: 'Tom'}];
const newArr = duce((prev, curr) =>
const ids = prev.map(item => item.id);
if (!ids.includes(curr.id))
prev.push(curr);
}
return prev;
},[]);
console.log(newArr);
```
上述代码中,首先创建一个空数组`prev`作为累积值。然后,使用`reduce`函数遍历原数组`arr`的每个元素`curr`,并在`reduce`函数的回调函数中使用`map`方法遍历累积值`prev`的每个元素,并提取出所有的`id`组成新的数组`ids`。如果`ids`中不包含当前元素`curr`的`id`,则将`curr`添加到累积值`prev`中。最后,返回累积值`prev`作为结果。
方法三:使用filter函数
可以使用`filter`函数来实现对象数组的去重。
```javascript
const arr = [{id: 1, name: 'Tom'}, {id: 2, name: 'Jerry'}, {id: 1, name: 'Tom'}];
const newArr = arr.filter((item, index, self) =>
const ids = self.map(item => item.id);
return ids.indexOf(item.id) === index;
});
console.log(newArr);
```
上述代码中,使用`filter`函数遍历原数组`arr`,并在`filter`函数的回调函数中使用`map`方法遍历原数组`arr`,提取出所有的`id`组成新的数组`ids`。然后,使用`indexOf`方法判断当前元素`item`的`id`在`ids`中的索引是否等于当前元素在原数组`arr`中的索引`index`,如果相等,则保留该元素。最后,返回筛选后的新数组。
除了上述介绍的三种方法,还可以使用其他的数组操作方法来实现对象数组的去重,如使用for循环、forEach方法等。根据具体的业务场景和需求,选择适合的方法来实现对象数组的去重。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。