js new set根据id去重
时间: 2023-04-05 16:01:35 浏览: 97
可以使用 Set 数据结构来去重,但是 Set 只能去重基本数据类型,如果要去重对象数组,可以使用 Map 数据结构。具体实现可以通过以下代码:
```javascript
const arr = [{id: 1, name: '张三'}, {id: 2, name: '李四'}, {id: 1, name: '王五'}];
const map = new Map();
const result = [];
for (const item of arr) {
if (!map.has(item.id)) {
map.set(item.id, true);
result.push(item);
}
}
console.log(result); // [{id: 1, name: '张三'}, {id: 2, name: '李四'}]
```
以上代码中,我们使用了 Map 数据结构来存储已经出现过的 id,然后遍历原数组,如果当前元素的 id 在 Map 中不存在,则将其加入结果数组中,并在 Map 中标记该 id 已经出现过。这样就可以实现根据 id 去重的功能。
相关问题
js使用new set根据ID去重
可以使用以下代码:
```js
const ids = [1, 2, 3, 2, 1, 4, 5, 3];
const uniqueIds = new Set(ids);
console.log([...uniqueIds]); // [1, 2, 3, 4, 5]
```
在这个例子中,我们创建了一个数组`ids`,其中包含重复的ID。然后,我们使用`new Set()`创建一个新的Set实例,并将`ids`数组作为参数传递给它。Set会自动去除重复的值,因此`uniqueIds`现在只包含唯一的ID。
最后,我们使用展开运算符`[...uniqueIds]`将Set转换为一个数组,并将其打印到控制台上。
js数组对象用Set根据属性去重
可以使用 Set 和 Array.from() 方法根据对象的某个属性进行去重。具体实现可以参考以下代码:
```javascript
// 原始数组
const arr = [
{ id: 1, name: 'apple' },
{ id: 2, name: 'banana' },
{ id: 3, name: 'orange' },
{ id: 1, name: 'apple' },
{ id: 4, name: 'pear' },
{ id: 2, name: 'banana' }
];
// 使用 Set 和 Array.from() 方法根据 id 去重
const result = Array.from(new Set(arr.map(item => item.id))).map(id => {
return arr.find(item => item.id === id);
});
console.log(result);
// 输出结果为:
// [
// { id: 1, name: 'apple' },
// { id: 2, name: 'banana' },
// { id: 3, name: 'orange' },
// { id: 4, name: 'pear' }
// ]
```
在上面的代码中,首先使用 map() 方法将原始数组中的元素转换为其 id 属性的值组成的新数组。然后使用 Set 对这个新数组进行去重。最后,使用 Array.from() 方法将 Set 转换为数组,并使用 map() 方法遍历这个数组,返回原始数组中与 id 属性匹配的元素。最终得到的结果就是根据 id 去重后的数组。
阅读全文