zoukankan      html  css  js  c++  java
  • 10-判断两个对象是否相等(有点类型every的实现)

    思路:(这里只做了对象中如果有多层,多层嵌套还是个对象的形式)

    1.把两个对象用Object.entries()转成数组,循环这两个数组,判断key和value,value再去判断数据类型(如果还是一个对象,那就用递归去重复),直到是基本数据类型的val1 == val2

    2.通过一个中间变量去存储布尔类型值,在循环判断中,满足条件就设置true,否则就为false。最后再return出去这个变量,如果是true,就证明两个对象相等

    var obj1 = {
        name: 'zs',
        age: 18,
        hobby: {
            eat: 'apple',
            drink: {
                a: 'colo',
                b: 'mink'
            }
        }
    }
    var obj2 = {
        name: 'zs',
        age: 18,
        hobby: {
            eat: 'apple',
            drink: {
                a: 'colo',
                b: 'mink'
            }
        }
    }
    
    
    // var x = {
    //     eat: 'apple'
    // }
    // var y = {
    //     eat: 'apple'
    // }
    // console.log(x === y, "相等吗"); 两个对象是两个堆内存,当然不相等 //false
    
    function isEqual(a, b) {
        let flag = true;
        (function fn(a, b) {
            let arr1 = Object.entries(a);
            let arr2 = Object.entries(b);
            for (let [key, val] of arr1) {
                for (let [key2, val2] of arr2) {
                    if (key === key2) {
                        if (val === val2) {
                            // console.log('我是相等那个', key, val);
                            flag = true
                        } else {
                            flag = false
                            if (val instanceof Object && val2 instanceof Object) {
                                fn(val, val2)
                            }
                        }
                    } else {
                        flag = false
                    }
                }
            }
        })(a, b)
        return flag;
    }
    let res = isEqual(obj1, obj2);
    console.log(res);
  • 相关阅读:
    隐马尔科夫模型
    cmake modules default path
    opencv mat
    cmake 查找头文件和库文件顺序
    opencv3.0 legacy和nonfree丢失
    qt include_directories没用
    ros中删除某个包之后用apt安装的包找不到
    sql-select
    关于ros stage与navigation仿真总结5月16号
    关系型数据库
  • 原文地址:https://www.cnblogs.com/haoqiyouyu/p/14903122.html
Copyright © 2011-2022 走看看