请实现对象数组去重 let arr = [{id:1},{id:1},{id:3},{id:4},{id:3},{id:5}]
时间: 2023-06-07 09:08:08 浏览: 47
好的,这是一个技术问题,我可以回答。对于这个问题,我们可以使用 ES6 中的 Set 数据结构来去重。具体实现如下:
```
let arr = [{id:1},{id:1},{id:3},{id:4},{id:3},{id:5}]
let uniqueArr = Array.from(new Set(arr.map(obj => JSON.stringify(obj)))).map(str => JSON.parse(str));
console.log(uniqueArr);
// 输出 [{id:1},{id:3},{id:4},{id:5}]
```
其中,我们先将对象数组中的每个对象转换为 JSON 字符串,然后通过 Set 数据结构的去重特性,去除重复的字符串元素。最后再将字符串转换为对象,得到去重后的结果。
相关问题
js 数组对象根据id去重
可以使用 Set 数据结构来去重,也可以使用 for 循环遍历数组,利用对象属性的唯一性来去重。具体实现可以参考以下代码:
// 使用 Set 数据结构去重
let arr = [{id: 1, name: '张三'}, {id: 2, name: '李四'}, {id: 1, name: '王五'}];
let set = new Set(arr.map(item => item.id));
let newArr = Array.from(set).map(id => arr.find(item => item.id === id));
console.log(newArr); // [{id: 1, name: '张三'}, {id: 2, name: '李四'}]
// 使用 for 循环遍历数组去重
let arr = [{id: 1, name: '张三'}, {id: 2, name: '李四'}, {id: 1, name: '王五'}];
let obj = {};
let newArr = [];
for (let i = ; i < arr.length; i++) {
if (!obj[arr[i].id]) {
obj[arr[i].id] = true;
newArr.push(arr[i]);
}
}
console.log(newArr); // [{id: 1, name: '张三'}, {id: 2, name: '李四'}]
vue js对象数组去重
在Vue.js中,可以使用一些方法来对对象数组进行去重操作。以下是一种常见的方法:
1. 使用Set数据结构:将对象数组转换为Set,然后再将Set转换回数组,这样就可以去除重复项。例如:
```javascript
let arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alice'}];
let uniqueArr = Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse);
console.log(uniqueArr);
```
2. 使用reduce方法:通过遍历对象数组,使用reduce方法来判断是否已存在相同的对象,如果不存在则将其添加到结果数组中。例如:
```javascript
let arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alice'}];
let uniqueArr = arr.reduce((acc, obj) => {
let exists = acc.find(item => item.id === obj.id);
if (!exists) {
acc.push(obj);
}
return acc;
}, []);
console.log(uniqueArr);
```
3. 使用lodash库:lodash是一个常用的JavaScript工具库,它提供了许多方便的函数来处理数据。可以使用lodash中的uniqBy函数来对对象数组进行去重。例如:
```javascript
import _ from 'lodash';
let arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alice'}];
let uniqueArr = _.uniqBy(arr, 'id');
console.log(uniqueArr);
```