AS3 сравни 2 массива на любую разницу - PullRequest
0 голосов
/ 02 ноября 2011

Надеюсь, кто-нибудь сможет пролить свет на этот, казалось бы, прямой вопрос. Мне нужно сравнить два массива, чтобы увидеть, идентичны ли они.

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");
}

В этом тесте прослеживается «другое», хотя массивы кажутся одинаковыми.

Кто-нибудь знает, где я иду не так?

Спасибо

Mark

Ответы [ 2 ]

10 голосов
/ 02 ноября 2011

Если вы хотите сравнить массивы, используйте небольшую хитрость:

if (String (_array2 ) == String ( _array1) )
{
    trace("the same");
} else {
    trace("different");
}
0 голосов
/ 02 ноября 2011

Массивы являются контейнерами, поэтому проверка на равенство будет эквивалентна проверке равенства элементов, которые они содержат, а также индексов этих элементов.

Не вдаваясь в глубокое сравнение объектов, ваш пример не работает, потому что эти массивы - это два разных несвязанных объекта. Вы можете добавлять или удалять элементы из одного, не влияя на другой.

Если вы хотите сравнить элементы, которые содержит каждый массив, вам, возможно, придется придумать другой метод, рекурсивно сравнивающий каждый элемент, который может быть непростым делом при работе со сложными объектами, но довольно простым для целых чисел, Числа или Строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...