JavaScript中比較兩個數組相等
直接比較數組相等,實際上是比較數組的內存地址是否相等,所以,直接用==和===比較兩個數字,最后都會返回false;
var a=new Array("1");b=new Array("1");console.log(a==b);
//這里的new可以省略,Array("2")表示創建一個數組,數組只有一個元素,為2;Array(2)表示創建一個數組,數組有兩個元素
false undefined var a=new Array("1");b=new Array("1");console.log(a===b); false undefined
事實上,要判斷兩個數組是否相等,只能將數組現轉化為字符串,再比較字符串是否相等,需要調用toString()方法:
var a=new Array("1","2"),
b=new Array("1","2");
console.log(a.toString()===b.toString());
true
var a=new Array("1","2"),
b=new Array("1","2");console.log(a.toString()==="1,2");
true
更嚴格來說,如果兩個數組中元素相同,但順序不同,則需要先對數組進行排序,再對排序完成的數組進行比較:arr.sort().toString();
var a=new Array("1","2","tt"),b=new Array("1","tt","2");
console.log(a.toString()===b.toString());
false
undefined
var a=new Array("1","2","tt"),b=new Array("1","tt","2");
console.log(a.sort().toString()===b.sort().toString());
true
undefined

