js数组对象根据某个属性去重
时间: 2023-07-18 19:18:49 浏览: 114
可以使用reduce方法和Map数据结构来实现根据某个属性去重。例如,如果要根据对象数组中的某个属性name去重,可以这样写:
```javascript
const arr = [
{ id: 1, name: 'foo' },
{ id: 2, name: 'bar' },
{ id: 3, name: 'foo' },
{ id: 4, name: 'baz' },
{ id: 5, name: 'bar' }
];
const map = new Map();
const result = arr.reduce((acc, cur) => {
if (!map.has(cur.name)) {
map.set(cur.name, true); // set any value to Map
acc.push(cur);
}
return acc;
}, []);
console.log(result);
// Output: [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 4, name: 'baz' }]
```
在这个例子中,我们通过reduce方法遍历原始数组,并使用Map数据结构来记录已经出现过的name,如果当前遍历到的对象的name还没有出现过,就将它加入结果数组中。最终的结果就是一个根据name去重后的新数组。
相关问题
js数组根据某个对象值去重
可以使用reduce方法和Map数据结构实现根据某个对象值去重。
例如,假设有如下数组:
```javascript
const arr = [
{ id: 1, name: 'foo' },
{ id: 2, name: 'bar' },
{ id: 1, name: 'baz' },
{ id: 3, name: 'qux' },
{ id: 2, name: 'quux' },
];
```
现在我们想要根据id值去重,可以使用reduce方法和Map数据结构实现:
```javascript
const uniqueArr = arr.reduce((acc, cur) => {
acc.has(cur.id) || acc.set(cur.id, cur);
return acc;
}, new Map()).values();
console.log([...uniqueArr]); // [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 3, name: 'qux' }]
```
上面的代码中,我们首先创建了一个新的Map实例作为reduce方法的初始值,然后对于数组中的每个元素,如果Map中不存在该元素的id属性,就将其添加到Map中。由于Map的键是唯一的,因此这样就实现了根据id去重的效果。最后,我们使用Map的values方法获取去重后的对象集合,并使用扩展运算符将其转换为数组。
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 去重后的数组。
阅读全文