照着老师给的代码打,可是不通过
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<script type="text/javascript">
/*
* param1 Array
* param2 Array
* return true or false
*/
function arraysSimilar(arr1, arr2){
//判断边界
if(!(arr1 instanceof Array)
|| !(arr2 instanceof Array)){
return false;
}
//判断长度
if(arr1.length != arr2.length) return false;
var i = 0,
n = arr1.length,
countMap1 = {},
countMap2 = {},
t1,t2,
t = ['string','boolean','number','undefined','null','window'];
for(;i<n;i++){
t1 = typeOf(arr1[i]);
t2 = typeOf(arr2[i]);
if(countMap1[t1]){
countMap1++;
} else {
countMap1[t1] = 1;
}
if(countMap2[t2]){
countMap2[t2]++;
} else {
countMap2[t2] = 1;
}
}
function typeOf(ele){
var r;
if(ele === null) r = 'null';
else if(ele instanceof Array) r = 'array';
else if(ele === window) r = 'window';
else if(ele instanceof Date) r = 'date';
else r = typeof ele;
return r;
}
for(i = 0,n = t.length;i<n;i++){
if(countMap1[t[i]] !== countMap2[t[i]]){
return false;
}
}
return true;
}
</script>
<script src="testData.js"></script>
</body>
</html>检查几次了,找不到哪里出错,另外,这个代码好像没有给数组里的元素类型进行排序,这样不会出错吗?