2014-11-24 107 views
0

這可能是一個相當愚蠢的問題,但我現在正在使用Javascript中的數組遇到麻煩。也就是說,這是爲什麼:使用JavaScript創建數組

這個
var data = new Array(new Array('a', 'b', 'c')); 

不等於:

var data2 = [['a', 'b', 'c']]; 

如果我比較這兩個數組,並打印出它說:false結果。這是爲什麼?

alert(data2==data); 
>false 

和更混亂,如果我創建第三個數據陣列作爲數據2並將它命名爲DATA3,爲什麼它仍然返回false當我比較兩者兼而有之?

var data3 = [['a', 'b', 'c']]; 
alert(data2==data3); 
>false 

我在這裏發生了什麼問題嗎?

+8

您正在比較引用,而不是值。 – soktinpk 2014-11-24 17:29:38

+7

每個新數組都是一個帶有自己引用的新對象。這就是爲什麼即使'[] == []'返回'false'。 – Kiril 2014-11-24 17:30:43

+0

如果你想比較不同的數組內容,然後看看這個接受的答案; http://stackoverflow.com/questions/13142968/deep-comparison-of-objects-arrays – renatoargh 2014-11-24 17:31:38

回答

0

下面是關於這個問題的另一種全面的回答:

How to compare arrays in JavaScript?

的代碼如何實現陣列平等通過兩個循環和檢查一塊一塊的,看看數組的各項指標基本要點等於。