js 数组去重若对象中有数据先去除没数据的
时间: 2024-12-30 15:39:30 浏览: 7
在JavaScript中,如果你想要从数组中移除重复的对象,并且对象中存在某些属性值未定义(即数据缺失),你可以通过检查每个对象的所有属性并确保它们都有值来进行去重。这里提供一种简单的方法:
```javascript
function uniqueObjects(array) {
const map = new Map();
return array.filter(obj => {
// 使用JSON.stringify将对象转换为字符串,然后只保留有数据的属性
let str = JSON.stringify(obj, (key, value) => value !== undefined ? value : '');
return !map.has(str) && map.set(str, obj);
});
}
let arr = [
{ name: 'John', age: 25 },
{ name: 'Jane' }, // 这里有一个age未定义
{ name: 'John', age: 25 },
{ name: 'Sarah' }
];
console.log(uniqueObjects(arr));
// 结果:[{ name: 'John', age: 25 }, { name: 'Jane' }, { name: 'Sarah' }]
```
在这个例子中,`uniqueObjects`函数首先创建了一个Map,然后遍历输入数组。对于每个对象,如果其转化为字符串后的形式(排除了所有undefined值)不在Map中,则添加到Map中并返回true,表示这个对象应该保留在新数组中。如果已经在Map中,说明它是一个重复项,就忽略。
阅读全文