美文网首页
isEquel深度比较

isEquel深度比较

作者: 酒暖花深Q | 来源:发表于2020-09-19 13:02 被阅读0次
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>对象深度比较</title>
    </head>
    <body>
        <script>
            //保证传入的必须是对象和不为空
            function isObject(obj){
                 return  typeof obj ===  "object" && obj !== null
            }
            //全相等
            function isEqual(obj1, obj2){
               if(!isObject(obj1) || !isObject(obj2)){  
                   //值类型比较(参与equl的一般不会是函数)
                   return obj1 === obj2
               }
               if(obj1 === obj2){
                    return true
               }
            //   两个都是数组或者对象且不相等
            //  1.先取出obj1 和obj2的 keys值,比较长度
                const obj1Keys = Object.keys(obj1);
                const obj2Keys = Object.keys(obj2);
                if(obj1Keys.length !== obj2Keys.length){
                    return false
                }
                //以obj1 为基准和obj2进行递归比较
                for (let key in obj1) {
                // 比较当前 key 的 val --- 递归
                const res = isEqual(obj1[key],obj2[key])
                    if(!res){
                        return false
                    }
                }
                return true
            }
            obj1 = {
                a:100,
                b:100,
                c:{
                    x:100,
                    y:100
                }
            }
            obj2 = {
                a:100,
                b:100,
                c:{
                    x:100,
                    y:100
                }
            }
            console.log(isEqual(obj1,obj2))
        </script>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:isEquel深度比较

          本文链接:https://www.haomeiwen.com/subject/isdwektx.html