2011-11-02 59 views
0

希望有人能夠對這個看似簡單的問題提出一些看法。 我需要比較兩個數組以查看它們是否相同。AS3比較2個陣列的任何區別

var _array1:Array = new Array(); 
var _array2:Array = new Array(); 


_array1.push(1,2,3,4,5); 

_array2 = _array1.concat(); 

trace("_array2 "+_array2); 
//traces 1,2,3,4,5 so I am assuming the copy took place. 


if (_array2 == _array1) { 
    trace("the same"); 
} else { 
    trace("different"); 
} 

即使數組看起來相同,該測試也會跟蹤'不同'。

有人會知道我要去哪裏錯了嗎?

感謝,

馬克

+0

==(和===)測試的身份,而不是平等。 –

回答

0

數組是容器,所以檢查平等的將相當於檢查它們所包含的元素以及這些元素的索引的平等。

沒有深入到對象比較,你的例子不起作用,因爲這些數組是兩個不同的不相關的對象。您可以添加或刪除一個元素而不會影響另一個元素。

如果你想比較每個數組包含的元素,你可能必須想出一個不同的方法,遞歸地比較每個元素,這在處理複雜對象時可能不是一個簡單的問題,但對於整數很直接,數字或字符串

9

如果要比較數組只使用小竅門:

if (String (_array2) == String (_array1)) 
{ 
    trace("the same"); 
} else { 
    trace("different"); 
} 
+4

只要你從不嘗試這種非原始類型......這將是大部分時間。 –

+2

這將適用於他的情況 - 如果只有數字和字符串是元素。但是,它不適用於存儲更復雜變量的數組。我相信你知道這一點,我只是想指出它的原始海報:) – gthmb

+0

複製數組的快速方法:myCopyArr = myOriginalArr.concat(); – Cadin