var arr=[{a:1,b:2},
{b:2,a:1},
{a:1,b:2,c:{a:1,b:2}},
{b:2,a:1,c:{b:2,a:1},},
]
const newArr = [...arr]
const isObject=(val)=>typeof val==='object'&&val!=null
function equals(val1,val2){
if(isObject(val1)&&isObject(val2)){
const keys1=Object.keys(val1),
keys2=Object.keys(val2)
if(keys1.length!=keys2.length){
return false
}
for (const k of keys1) {
if(!keys2.includes(k)){
return false
}
if(!equals(val1[k],val2[k])){
return false
}
}
return true
}else{
return val1===val2
}
}
for(var i = 0;i < newArr.length; i++){
for(var j = i + 1; j < newArr.length; j++){
if(equals(newArr[i],newArr[j])){
newArr.splice(j,1)
j--
}
}
}
console.log(newArr)
数组对象去重
于 2023-03-10 18:16:55 首次发布