帮我用js写一段数组对象去重的方法
时间: 2023-12-09 13:49:54 浏览: 32
当然可以!以下是一段用 JavaScript 实现数组对象去重的方法:
```javascript
function uniqueArrayObjects(arr) {
const seen = new Set();
return arr.filter(item => {
const serialized = JSON.stringify(item);
if (seen.has(serialized)) {
return false;
}
seen.add(serialized);
return true;
});
}
```
这个方法会接受一个数组对象作为参数,然后返回一个去重后的新数组对象。它的原理是使用了 ES6 中的 Set 数据结构来存储已经出现过的对象,然后通过 JSON.stringify 将每个对象序列化成字符串来进行比较。如果已经出现过,就过滤掉,否则就加入 Set 中并保留在新数组对象中。
相关问题
vue写一段数组对象去重的代码
以下是一段使用ES6 Set和数组的filter方法来去重的代码:
```javascript
const arr = [{ id: 1, name: 'John' }, { id: 2, name: 'Mike' }, { id: 1, name: 'John' }, { id: 3, name: 'Mary' }];
const uniqueArr = [...new Set(arr.map(item => JSON.stringify(item)))].map(item => JSON.parse(item));
console.log(uniqueArr); // [{id: 1, name: "John"}, {id: 2, name: "Mike"}, {id: 3, name: "Mary"}]
```
解释:
1. 利用map方法将数组中的对象转换为字符串形式,方便比较。
2. 利用Set去重,再将Set转换为数组形式。
3. 利用map方法将字符串形式的对象转换为对象形式。
注意:
1. 这种方法会将对象中属性的顺序打乱。
2. 对象中如果有函数等非JSON格式的属性,会被忽略。
写一段js数组对象去重
可以使用 ES6 中的 Set 构造函数,具体实现代码如下:
let arr = [{id: 1}, {id: 2}, {id: 1}];
let newArr = Array.from(new Set(arr.map(item => item.id))).map(id => {
return arr.find(item => item.id === id);
});