码迷,mamicode.com
首页 > 其他好文 > 详细

判断两个对象内容值是否相等

时间:2020-09-24 22:04:06      阅读:31      评论:0      收藏:0      [点我收藏+]

标签:===   return   如何   UNC   color   ken   object   对象   过程   

现在有两个对象:

let a = {name: ‘zj‘, tel: ‘123‘, sex: 0, id: 1}
let b = {name: ‘zj‘, tel: ‘123‘, sex: 0, id: 1}

如何判断对象a和对象b相等呢?

a==b //false
Object.is(a,b) //false

这个时候需要自己定义一个方法来判断对象内容值是否相等,代码如下:
function objEqual(a, b) {
    if (Object.keys(a).length !== Object.keys(b).length) {
        return false
    }
    for (let key in a) {
        if (b[key] === undefined) {
            return false
        }
        if (a[key] !== b[key]) {
            return false
        }
    }
    return true
}

但是,如果涉及到对象内部还存在复式结构的,比如:

let c = {name: ‘zj‘, tel: ‘123‘, sex: 0, id: 1, obj: {name: ‘111‘}}
let d = {name: ‘zj‘, tel: ‘123‘, sex: 0, id: 1, obj: {name: ‘1111‘}}

这样如何解决呢?

回答:采用嵌套就可以啦~~

代码如下:
function objEqual(a, b) {
    if (Object.keys(a).length !== Object.keys(b).length) {
        return false
    }
    for (let key in a) {
        if (b[key] === undefined) {
            return false
        }
        if (typeof(b[key]) === ‘function‘ || typeof(a[key]) === ‘function‘) {
            throw new Error(‘type error‘)
        }
        if (typeof(b[key]) != typeof(a[key])) {
            return false
        }
        if (typeof(a[key]) === ‘object‘) {
            return objEqual(a[key], b[key])
        }
        if (a[key] !== b[key]) {
            return false
        }
    }
    return true
}

记录一下我的实现过程,参考参考~~

 

判断两个对象内容值是否相等

标签:===   return   如何   UNC   color   ken   object   对象   过程   

原文地址:https://www.cnblogs.com/zjingjing/p/13724039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!