慕的地9364136
2019-02-09 21:04
<!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 type(a){
return a === null ? '[object Null]':Object.prototype.toString.apply(a); //hack ie678
//判断并获取TYPE类型
}
function arraysSimilar(arr1, arr2){
if(!Array.isArray(arr1)||!Array.isArray(arr2)||arr1.length!==arr2.length){return false;}//判断是否是数组,数组长度是否相等。
var arr3=[];
var arr4=[];
for(var i in arr1){
arr3.push(type(arr1[i]));
arr4.push(type(arr2[i]));
}//转换数组变量type给arr3,arr4?
//?为什么for-in只在arr1里面迭代
if(arr3.sort().toString()==arr4.sort().toString()){
return true;
}
else{
return false;
}//比较排序后的数组字符串是否相等
}
</script>
<script src="testData.js"></script>
</body>
</html>
因为ie6-8对null的类型判断是错误的,所以需要增加判断a===null,如果成立就显示字符串“[object Null]}”
JavaScript深入浅出
281100 学习 · 1020 问题
相似问题