判断两个对象是否相同

const obj=[
    {a:1,b:2},
    {b:2,a:1},
    {a:1,b:2},
    {a:3,b:{c:11,d:4}},
    {a:3,b:{d:4,c:1}}
]

const newArr=[...obj];
function isObject(obj){
    return obj!==null && typeof obj==='object';
}
function objIsEqual(obj1,obj2){
    if(!isObject(obj1) || !isObject(obj2)){
        return Object.is(obj1,obj2);
    }
    if(obj1===obj2){
        return true;
    }
    const keys1=Object.keys(obj1);
    const keys2=Object.keys(obj2);
    if(keys1.length!==keys2.length){
        return false;
    }
    for(let key of keys1){
        if(!keys2.includes(key)){
            return false;
        }
        const res=objIsEqual(obj1[key],obj2[key]);
        if(!res){
            return false;
        }
    }
    return true;
}
for(let i=0;i<obj.length;i++){
    for(let j=i+1;j<newArr.length;j++){
        //if(JSON.stringify(obj[i])===JSON.stringify(newArr[j])){
            if(objIsEqual(obj[i],newArr[j])){
            newArr.splice(i,1);
            j--;
        }
    }
}

console.log(newArr)

 

posted @ 2026-01-20 13:57  howhy  阅读(2)  评论(0)    收藏  举报