<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var obj1={
            x:100,
            y:{
                a:100,
                b:200
            }
        };
        var obj2={
            x:100,
            y:{
                a:100,
                b:200
            }
        };
        console.log(isEqual(Number('wq'),Number('wq')));
        console.log(isEqual([1, 2, 3],{0: 1, 1: 2, 2:3}));



        function isObject(obj){
            if(typeof obj === 'object' && typeof obj!= null){
                return true;
            }
            return false;
        }
        function isArray(obj){
            return obj instanceof Array;
        }
        function isEqual(obj1,obj2){
            //类型比较
            // 如果又任何一方不是object,则自行比较
            if(!isObject(obj1) || !isObject(obj2)){
                // 用object.is()会更好,避免出现NaN===NaN为false的情况
                return Object.is(obj1) === Object.is(obj2);
                // return obj1===obj2;
            }
            if(isArray(obj1)!==isArray(obj2)){
                return false;
            }
            // 传入的同一个对象
            if(obj1===obj2){
                return true;
            }
            // 长度比较
            var len1 = Object.keys(obj1).length;//[x,y]
            var len2 = Object.keys(obj2).length;//[x,y]
            if(len1!==len2){
                return false;
            }
            // 值比较
            for(var key in obj1){
                var result=isEqual(obj1[key],obj2[key]);
                if(!result){
                    return false;
                }
            }
            return true;
        }
    </script>
</body>
</html>

kangting
62 声望3 粉丝

一只小小的前端