慕粉8072529
2019-08-31 10:36
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb18030">
<title>Untitled Document</title>
</head>
<body>
<script type="text/javascript">
function arraysSimilar(arr1, arr2){
if(arr1.length==arr2.length){
var m=0;
for(var i=0;i<arr1.length;i++){
for(j=m;j<arr2.length;j++){
if(Object.prototype.toString.apply(arr1[i])==Object.prototype.toString.apply(arr2[j])){
var t=arr2[m];
arr2[m]=arr2[j];
arr2[j]=t;
m++;
break;
}
else{
}
}
}
if(m==arr1.length){
return true;
}
else{
return false;
}
}
else{
return false;
}
}
</script>
<script src="testData.js"></script>
</body>
</html>
首先你需要先用 Object.prototype.toString.call(arr1) === '[object Array]' 来判断是否是数组;
如下:
function arraysSimilar(arr1, arr2) {
var num = 0;
if (Object.prototype.toString.call(arr1) === '[object Array]' && Object.prototype.toString.call(arr2) === '[object Array]') {
if (arr1.length === arr2.length) {
for (var i = 0; i < arr1.length; i++) {
for (var j = 0; j < arr2.length; j++) {
if (Object.prototype.toString.call(arr1[i]) === Object.prototype.toString.call(arr2[j])) {
num++;
}
}
}
if (num === arr1.length) {
return true;
}
}
}
return false
}
原来测试条件里并非都是数组,不能对基本类型使用length方法
JavaScript深入浅出
281087 学习 · 1054 问题
相似问题