对象数组去重
// 用于判断两个对象是否相等的函数
function isObjectEqual(obj1, obj2) {
const keys1 = Object.keys(obj1);
const keys2 = Object.keys(obj2);
if (keys1.length !== keys2.length) {
return false;
}
return keys1.every(key => {
return typeof obj1[key] === 'object' ? isObjectEqual(obj1[key], obj2[key]) : obj1[key] === obj2[key];
});
}
function uniqueArray(arr) {
const result = []
for(let i = 0; i < arr.length; i++) {
const item = arr[i]
const isExist = result.some((resultItem) => {
return isObjectEqual(resultItem, item)
})
if(!isExist) {
result.push(item)
}
}
return result
}
const arr = [
{
a: 1,
b: 2
},
{
b: 2,
a: 1
},
{
a: '1',
b: 2
},
{
c: 3
}
];
const deduplicatedArr = uniqueArray(arr);
console.log(deduplicatedArr);
这个问题主要可以拆分成两步
1. 判断两个对象是否相等
2. 去重逻辑