数组对象去重 set
时间: 2023-10-06 11:11:54 浏览: 88
Set是ES6中新增的一种数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。Set可以用来对数组对象进行去重。
下面是一个示例代码:
```
const arr = [{ id: 1, name: 'apple' }, { id: 2, name: 'banana' }, { id: 1, name: 'apple' }];
const set = new Set(arr.map(JSON.stringify));
const uniqueArr = Array.from(set).map(JSON.parse);
console.log(uniqueArr);
```
首先,我们使用map方法将数组中的每个元素转化为字符串,然后使用Set去重,最后再通过map方法将字符串转化为对象。这样就能保留原数组中每个对象的所有属性,并且去重后的数组中不会出现重复的对象。
需要注意的是,Set去重时是根据每个元素的值进行去重,而不是根据每个元素的引用地址进行去重。因此,如果数组中有两个引用地址不同但是值相同的对象,Set去重并不会将它们视为重复元素。
相关问题
js new set数组对象去重对象
在JavaScript中,可以使用Set对象来实现数组和对象的重操作。Set是一种新的数据结构,类似于数组,但是可以去除重复的值。但需要注意的是,对于存储引用类型的值,Set无法自动去重,因为相同的引用值在内存中的地址是不一样的。只有当引用值的地址完全相同才会被认为是重复的。下面是一个例子:
```javascript
var mySet = new Set();
mySet.add([-1, 0, 1]);
mySet.add([-1, 0, 1]);
mySet.add({a: 1});
mySet.add({a: 1});
console.log(Array.from(mySet));
```
输出结果为:[[-1, 0, 1], [-1, 0, 1], {a: 1}, {a: 1}],可以看到,数组和对象的重复值并没有被自动去重。
如果想要对多维数组和对象进行深层的去重操作,常见的方法是使用Set结合filter函数进行操作。但是需要注意的是,Set和filter只能对一维数组进行去重,无法进行深层的去重。如果需要对多维数组和对象进行深层的去重,可以使用递归的方法判断是否为对象,如果是对象则继续递归判断其值是否为数组或对象,以此类推。
总结来说,通过使用Set对象可以实现对数组和对象的去重操作,但对于存储引用类型的值需要注意地址的唯一性。如果需要对多维数组和对象进行深层的去重操作,可以结合递归和判断值的类型来实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [new set数组对象去重失败](https://blog.csdn.net/qq_22182989/article/details/129386809)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [多维数组和对象-深去重和深拷贝.js](https://download.csdn.net/download/weixin_44786867/12702478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
js new set数组对象去重
你可以使用JavaScript中的Set对象来实现数组去重。Set对象是一种集合数据结构,它只存储唯一的值。
下面是使用Set对象进行数组去重的示例代码:
```javascript
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
在上面的代码中,我们首先创建一个Set对象 `new Set(arr)`,并将数组 `arr` 作为参数传递给它。然后,我们使用扩展运算符 `...` 将Set对象转换为数组,从而得到去重后的数组 `uniqueArr`。
通过这种方式,重复的元素会被自动去除,而只保留唯一的值。
阅读全文