数组去重,属性相同的对象也算重复 Object.is使用

console.log(Object.is(+0,-0)) //false    但是控制台为true
console.log(Object.is(NaN,NaN)) // true  但是控制台是false
const uniqueArray = (arr)=>{
    const result = []
    outer:for(const item of arr){
        for(r of result){
            if(equals(r,item)){
                continue outer
            }
        }
        result.push(item)
    }
}
function isPrimitive(value){
    return value === null || (typeof value !== 'object' && typeof value !== 'function')
}
function equals(value1,value2){
    if(isPrimitive(value1) && isPrimitive(value2)){
        return Object.is(value1,value2)
    }
    const entries1 = Object.entries(value1)
    const entries2 = Object.entries(value2)
    if(entries1.length !== entries2.length){
        return false
    }
    for(const [key,value] of entries1){
        if(!equals(value,value2[key])){
            return false
        }
    }
}

  

posted @ 2024-11-28 10:56  国服第一李师师  阅读(7)  评论(0)    收藏  举报