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