hins_
2017-08-25 20:54
function arraysSimilar(arr1, arr2){
var narr1=new Array();
var narr2=new Array();
if(arr1 instanceof Array==false||arr2 instanceof Array==false){
return false
}
else if(arr1.length==arr2.length){
for(var i=0;i<arr1.length;i++){
narr1[i]=typeof arr1[i];
narr2[i]=typeof arr2[i];
}
for(var i=0;i<arr1.length;i++){
for(var j=0;j<arr2.length;j++){
if(narr1[i]==narr2[j]&&narr1[i]!='object'){
narr1[i]=true;
narr2[j]=true;
break;
}
else if(narr1[i]==narr2[j]&&narr1[i]=='object'){
if(arr1[i]==null||arr2[j]==null){
if(arr1[i]==null&&arr2[j]==null){
narr1[i]=true;
narr2[j]=true;
break;
}
}
else if(arr1[i].constructor==arr2[j].constructor){
narr1[i]=true;
narr2[j]=true;
break;
}
}
}
}
for(var i=0;i<arr1.length;i++){
if(narr1[i]!=true){
return false;
break;
}
}
return true;
}
else
return false;
}
写个注释啊
提个问题
题目中定义的数组相似概念包括了:1.A和B都是数组 2.A和B长度相同 3.A和B类型相同 ,关于第三点很多人的理解不同,从参考答案的写法来看,这里的类型相同不光是A的子元素有的类型B都有之外,每种类型的子元素的个数都应对应相等,如A=[String1,String2,String3,Num1,Num2]和B=[String1,String2,Nun1,Num2,Num3]的判定结果应该是不相似的,很多人都没有考虑这一点
JavaScript深入浅出
281112 学习 · 1020 问题
相似问题