js对数组中的对象去重
时间: 2023-06-23 14:45:25 浏览: 88
对于数组中包含对象的情况,可以先将对象转换成字符串,再使用Set或者利用对象属性的唯一性进行去重。
1. 对象转换成字符串后去重
首先定义一个函数,用于将对象转换成字符串。然后使用Set进行去重,最后将结果转换回对象数组。
```javascript
function objToString(obj) {
var str = '';
for (var key in obj) {
str += key + obj[key];
}
return str;
}
var arr = [{a:1, b:2}, {a:1, b:2}, {a:2, b:3}];
var set = new Set(arr.map(item => objToString(item)));
var result = Array.from(set).map(item => JSON.parse(item));
console.log(result); // [{a:1, b:2}, {a:2, b:3}]
```
2. 利用对象属性的唯一性进行去重
如果对象的属性值都是基本数据类型(比如数字、字符串等),可以考虑利用对象属性的唯一性进行去重。
```javascript
var arr = [{a:1, b:2}, {a:1, b:2}, {a:2, b:3}];
var obj = {};
arr.forEach(item => {
obj[item.a + '-' + item.b] = item;
});
var result = Object.values(obj);
console.log(result); // [{a:1, b:2}, {a:2, b:3}]
```
以上两种方法根据实际情况选择使用。如果对象属性值比较复杂,或者顺序不一致,建议使用第一种方法。
阅读全文