问答详情
源自:1-6 编程练习

编写arraysSimilar函数判断两个数组是否相似,有没有问题?

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb18030">
    <title>Untitled Document</title>
    
</head>
<body>
    <script type="text/javascript">   
        /*
         * param1 Array 
         * param2 Array
         * return true or false
         */
        function arraysSimilar(arr1, arr2){
            //数组长度不等直接返回false,不用进行下一步判断了
            if(arr1.length == arr2.length){
                //获取arr1,arr2中的数据类型
                var arr1Proto = getPrototype(arr1);
                var arr2Proto = getPrototype(arr2);
                
                //判断arr1中有的数据类型在arr2中能否找到
                arr1Proto.forEach(function(item,index,arr){
                    if(!arr2Proto.indexOf(item)){
                        return false;
                    }
                });
                return true;
            }
            return false;
        }
        
        /* 
         * 获取数组成员的数据类型
         */
        function getPrototype(arr){
            var protoArr = [];
            arr.forEach(function(item,index,arr){
                //根据视频里讲到的,使用Object.prototype.toString有个检测null的兼容性问题
                ,所以对null进行另外检测,当数组成员为null时则将它的数据类型设置为"null"
                if(item == null && item !== undefined){
                    protoArr.push("null");
                }else{
                    protoArr.push(Object.prototype.toString.apply(item));
                }
            });
            return protoArr;
        }
    </script>
    <script src="testData.js"></script>
</body>
</html>


提问者:_Doogie 2016-09-05 15:03

个回答

  • 慕仔3199241
    2016-09-05 18:22:41

    没有问题