为了账号安全,请及时绑定邮箱和手机立即绑定

编写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>


正在回答

1 回答

没有问题

0 回复 有任何疑惑可以回复我~
#1

_Doogie 提问者

感觉好像少了一步,就是上面只是判断arr1的数据类型在arr2中能否找到,没判断arr2中的数据类型在arr1中能否找到了,万一arr2多了一种数据类型
2016-09-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信