js对象数组根据id去重代码示例
时间: 2023-09-28 19:07:33 浏览: 74
可以使用reduce和Map来对对象数组根据id去重,代码示例如下:
```javascript
const arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Charlie' },
{ id: 3, name: 'David' }
];
const map = new Map();
const uniqueArr = arr.reduce((acc, cur) => {
if (!map.has(cur.id)) {
map.set(cur.id, true);
acc.push(cur);
}
return acc;
}, []);
console.log(uniqueArr);
// Output: [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'David' }]
```
请问还有什么问题吗?
相关问题
js 数组根据id去重
可以使用数组的 reduce() 方法和一个对象来实现根据 id 去重。具体步骤如下:
1. 使用 reduce() 方法遍历数组,将每个元素的 id 作为 key 存入一个空对象中。
2. 如果对象中不存在当前元素的 id,则将其加入结果数组中,并将其 id 在对象中设为 true。
3. 返回结果数组。
示例代码如下:
```javascript
const arr = [
{ id: 1, name: 'foo' },
{ id: 2, name: 'bar' },
{ id: 1, name: 'baz' },
{ id: 3, name: 'qux' },
{ id: 2, name: 'quux' }
];
const uniqueArr = arr.reduce((acc, cur) => {
if (!acc[cur.id]) {
acc[cur.id] = true;
acc.result.push(cur);
}
return acc;
}, { result: [] }).result;
console.log(uniqueArr); // [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 3, name: 'qux' }]
```
在上面的代码中,我们使用一个对象 `{ result: [] }` 作为 reduce() 方法的初始值,其中 `result` 属性存储去重后的结果数组。
在 reduce() 方法的回调函数中,如果对象中不存在当前元素的 id,则将其加入结果数组中,同时将其 id 在对象中设为 true。最后返回包含去重后结果的对象的 `result` 属性。
js实现数组下对象去重
你可以使用 JavaScript 中的 Set 对象来实现数组中对象的去重。Set 对象允许你存储任何类型的唯一值,包括对象。下面是一个简单的示例代码:
```javascript
// 示例数组
let arr = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' },
{ id: 3, name: 'Charlie' },
{ id: 2, name: 'Bob' }
];
// 使用 Set 对象去重
let uniqueArr = Array.from(new Set(arr.map(JSON.stringify)), JSON.parse);
console.log(uniqueArr);
```
在上面的代码中,我们使用 `map` 方法将每个对象转换为字符串,然后使用 `Set` 对象去重。最后,我们使用 `Array.from` 方法将唯一的字符串转换回对象。
输出结果将是一个仅包含唯一对象的数组 `uniqueArr`:
```javascript
[
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
]
```
这样就实现了数组中对象的去重。希望对你有帮助!如果你有任何其他问题,请随时提问。
阅读全文