js 对象列表去重方法有哪些
时间: 2024-12-02 20:14:52 浏览: 5
JavaScript中有多种方法可以对对象列表进行去重处理,以下是几种常见的方式:
1. **Set** 或者 **Map**:利用ES6新增的数据结构Set,它不允许有重复的值,将对象放入Set中,最后再转回数组即可。例如:
```javascript
let uniqueList = [...new Set(arrayOfObjects)];
```
如果需要保留属性顺序,可以使用Map,并配合JSON.stringify:
```javascript
let map = new Map();
arrayOfObjects.forEach(obj => {
let strObj = JSON.stringify(obj);
if (!map.has(strObj)) map.set(strObj, obj);
});
uniqueList = Array.from(map.values());
```
2. **LoDash _.uniqBy**:Lodash库提供了一个_.uniqBy方法,可以根据指定的属性去重:
```javascript
let lodash = require('lodash');
let uniqueList = lodash.uniqBy(arrayOfObjects, 'someProperty');
```
3. **自定义比较函数**:利用Array.prototype.filter(),通过创建一个比较函数,判断两个对象是否相等:
```javascript
function isDuplicate(a, b) {
return a.someProperty === b.someProperty;
}
let uniqueList = arrayOfObjects.filter((value, index, self) => !self.findIndex(i => isDuplicate(value, i))).
```
4. **JSON排序然后拼接**:先将所有对象转化为字符串,然后排序并连接成新的数组。这种方法适用于简单对象且不需要考虑属性顺序的情况:
```javascript
let uniqueList = [...].sort((a, b) => JSON.stringify(a) > JSON.stringify(b)).filter((val, index, arr) => index === arr.indexOf(val));
```
阅读全文