希望有人可以对这个“看似”直截了当的问题有所了解。 我需要比较两个数组,看看它们是否相同。
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 :(得分:10)
如果你想比较数组,只需使用小技巧:
if (String (_array2 ) == String ( _array1) )
{
trace("the same");
} else {
trace("different");
}
答案 1 :(得分:0)
数组是容器,因此检查相等性将等同于检查它们包含的元素的相等性以及这些元素的索引。
不深入对象比较,您的示例不起作用,因为这些数组是两个不同的不相关对象。您可以在不影响另一个的情况下添加或删除元素。
如果你想比较每个Array包含的元素,你可能需要提出一个不同的方法,递归地比较每个元素,这在处理复杂的对象时可能不是一个简单的问题,但对于整数来说非常简单,数字或字符串