用不同的思路写的函数,测试了几个好像是可以用的
function arraysSimilar(arr1, arr2){
var len=arr2.length;
function arraysSimilar(arr1, arr2){
var len=arr2.length;
if(!(arr1 instanceof Array)||!(arr2 instanceof Array)){return false}; //检查是否为数组
if(arr1.length != arr2.length){return false}; //检查长度是否一致
for(var i=0;i<arr1.length;i++){//循环数组1
arr1[i].index= i; //保存数组1的下标
if(arr1.length != arr2.length){return false}; //检查长度是否一致
for(var i=0;i<arr1.length;i++){//循环数组1
arr1[i].index= i; //保存数组1的下标
for(var j=0;j<arr2.length;j++){//循环数组2
if(typeof arr1[i] == Object && typeof arr2[j] == Object){//如果数组1的i元素和数组2的j元素都是对象执行以下if
if(Object.prototype.toString.apply(arr1[i]) == Object.prototype.toString.apply(arr2[j])){//检查两者的对象是否一致
if(typeof arr1[i] == Object && typeof arr2[j] == Object){//如果数组1的i元素和数组2的j元素都是对象执行以下if
if(Object.prototype.toString.apply(arr1[i]) == Object.prototype.toString.apply(arr2[j])){//检查两者的对象是否一致
arr2.splice(j,1);//删除该元素
continue;
}
}else if(typeof arr1[i] === typeof arr2[j]){//如果类型一致,执行以下循环
arr2.splice(j,1);//删除该元素
continue;
}
}
continue;
}
}else if(typeof arr1[i] === typeof arr2[j]){//如果类型一致,执行以下循环
arr2.splice(j,1);//删除该元素
continue;
}
}
if(arr2.length === len){return false;//检查数组2的长度是否变化,未变化即证明没有匹配成功
}else{len = arr2.length}
}
return true;
};
a1=[1, true,6,[1]];
a2=[[1,2,3],false,2,5];
console.log(arraysSimilar(a1,a2));
}else{len = arr2.length}
}
return true;
};
a1=[1, true,6,[1]];
a2=[[1,2,3],false,2,5];
console.log(arraysSimilar(a1,a2));