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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 @   国服第一李师师  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示