今天项目有一个需求是判断两个数组a,b是否相等来确定内容有没有进行过修改,如果数组不一样就是修改过要进行提示,然后我下意识用===来判断,报错后才意识到数组是引用数据类型,不是基本数据类型,所以不能根据值来判断,对象的比较均是引用的比较,他们是不同引用对象有着不同的内存空间。所以我们不能用===来判断,可以用以下方法判断。
方法一:数组转化为字符串,然后用===或者==判断
var a=[1,2,3];
var b=[1,2,3];
console.log(a.toString()===b.toString())//true
方法二:for循环,简单粗暴,默认长度相等
var a=[1,2,4];
var b=[1,2,4];
function arrEqual(a,b){
var len=a.length;
for(var i=0;i<len;i++){
if(a[i]!==b[i]){
return false;
}
}
return true
}
console.log(arrEqual(a,b))//true