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

来源:1-6 编程练习

_Doogie

2016-09-05 15:03

<!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>


写回答 关注

1回答

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

    没有问题

    _Doogi...

    感觉好像少了一步,就是上面只是判断arr1的数据类型在arr2中能否找到,没判断arr2中的数据类型在arr1中能否找到了,万一arr2多了一种数据类型

    2016-09-05 18:49:16

    共 1 条回复 >

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281112 学习 · 1020 问题

查看课程

相似问题