js中数组对象如何去重
时间: 2023-10-10 21:06:45 浏览: 47
在 JavaScript 中,可以使用多种方法对数组对象进行去重。下面列举了几种常见的方法:
1. 使用 Set 数据结构:Set 是一种无重复值的集合,可以用来去除数组中的重复元素。例如:
```javascript
const array = [{id: 1}, {id: 2}, {id: 1}, {id: 3}];
const uniqueArray = [...new Set(array.map(JSON.stringify))].map(JSON.parse);
console.log(uniqueArray);
```
2. 使用 filter() 方法和 indexOf() 方法:使用 filter() 方法遍历数组,同时使用 indexOf() 方法判断当前元素是否已经出现过。例如:
```javascript
const array = [{id: 1}, {id: 2}, {id: 1}, {id: 3}];
const uniqueArray = array.filter((item, index) => {
return index === array.findIndex(obj => JSON.stringify(obj) === JSON.stringify(item));
});
console.log(uniqueArray);
```
3. 使用 reduce() 方法:使用 reduce() 方法遍历数组,将不重复的元素添加到一个新的数组中。例如:
```javascript
const array = [{id: 1}, {id: 2}, {id: 1}, {id: 3}];
const uniqueArray = array.reduce((acc, item) => {
const hasDuplicate = acc.some(obj => JSON.stringify(obj) === JSON.stringify(item));
if (!hasDuplicate) {
acc.push(item);
}
return acc;
}, []);
console.log(uniqueArray);
```
这些方法都可以用来去除数组中的重复对象。注意,在比较对象是否相等时,需要将对象转换为字符串进行比较,因为对象之间的直接比较是基于引用的,而不是对象自身的内容。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)