// 判断是否为对象
const isObject = (val) => val !== null && typeof val === 'object';
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;
}
// 遍历对象的key
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;
}
}
const 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];
for (let i = 0; i < newArr.length; i++) {
for (let j = i+1; j < newArr.length; j++) {
if (equals(newArr[i],newArr[j]) && i !== j) {
newArr.splice(j, 1);
j--;
}
}
}
console.log(newArr);//[ { a: 1, b: 2 }, { a: 1, b: 2, c: { a: 1, b: 2 } } ]
记录一下工作中比较有用的东西!