js数组中 set方法去重
时间: 2023-12-07 19:04:22 浏览: 118
在JavaScript中,可以使用Set对象来进行数组去重。Set是ES6新提供的数据结构,类似于数组,但是本身没有重复值。利用这一特性,我们可以将数组转为Set类型进行去重,然后使用Array.from方法将其再转为数组。具体实现方法如下所示:
```
var arr = [1, '2', 3, 4, undefined, NaN, NaN, 33, 33, 22];
var newArr = Array.from(new Set(arr));
console.log(newArr);
```
上述代码中,首先定义了一个包含重复元素的数组arr,然后使用Set对象将其转为Set类型进行去重,最后使用Array.from方法将其再转为数组。最终输出的newArr数组中,所有重复元素都被去除了。
相关问题
js数组对象set去重
可以使用 Set 对数组对象进行去重。具体实现方法如下:
```
let arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Charlie'}];let set = new Set(arr.map(item => item.id));
let result = Array.from(set).map(id => arr.find(item => item.id === id));
```
上述代码中,首先使用 map() 函数遍历数组对象,将对象的 id 属性提取出来,然后使用 Set 对 id 数组进行去重。最后使用 map() 函数遍历去重后的 id 数组,通过 find() 函数找到对应的对象,最终得到一个去重后的新数组 result。
js 数组对象根据字段去重
可以使用 reduce 方法和 Set 数据结构来实现:
```javascript
const arr = [
{ id: 1, name: 'foo' },
{ id: 2, name: 'bar' },
{ id: 3, name: 'foo' },
{ id: 4, name: 'baz' },
{ id: 5, name: 'bar' }
];
const uniqueArr = Array.from(
arr.reduce((map, obj) => map.set(obj.name, obj), new Map()).values()
);
console.log(uniqueArr); // [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 4, name: 'baz' }]
```
上面的代码中,使用 reduce 方法将数组转化为 Map 对象,其中以 name 字段为键,对象本身为值。由于 Map 对象的键是唯一的,因此重复的项会被覆盖。最后,使用 Map 对象的 values 方法获取所有的值,再通过 Array.from 方法转化为数组即可得到去重后的结果。
阅读全文