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));
预编译四部曲:
1.创建AO对象(Activation Object)(执行期上下文)
2.找形参和变量声明,作为对象的属性名,值为undefined
3.将实参和形参相统一
4.在函数体里找函数声明,值赋予函数体
1.创建AO对象(Activation Object)(执行期上下文)
2.找形参和变量声明,作为对象的属性名,值为undefined
3.将实参和形参相统一
4.在函数体里找函数声明,值赋予函数体
2018-02-28