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


    现在有两个对象:

    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
    }

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

     
  • 相关阅读:
    聊天ListView
    Android笔试题三
    java内存分配与垃圾回收
    Activity切换的时候生命周期的变化
    二分查找
    如何用报表工具实现树状层级结构的填报表
    报表数据填报中的自动计算
    报表数据填报中的合法性校验
    tab 页形式展现多张报表
    报表工具之数据校验竟可以如此简单
  • 原文地址:https://www.cnblogs.com/zjingjing/p/13724039.html
Copyright © 2020-2023  润新知