PDA

Просмотр полной версии : Странное поведение массива


in4core
23.02.2010, 15:58
Ребят все очень странно получается не могу понять в чем проблема.

У меня создается массив через push . Сначала массив пустой. Через push добавляются строки.
Конечный массив выглядет скажем так : statusX=["NO","NO","YES","NO","NO","NO"]
Когда же я начинаю проверять через trace(statusX==["NO","NO","YES","NO","NO","NO"]) мне выводится false / и я не пойму почему.
На проверку trace(statusX); // NO,NO,YES,NO,NO,NO
все как бы правильно..... но почему false ?

udaaff
23.02.2010, 16:10
Потому-что вы новый массив создаете.

in4core
23.02.2010, 16:12
А как тогда быть?
И вообще причем тут новый массив! Я же ясно показал что трейс выводит верный массив. Однако трейс на проверку говорит что массив не верен!

samana
23.02.2010, 16:37
Взгляните (http://books.google.com.ua/books?id=u-8smfFDY_0C&pg=PA234&lpg=PA234&dq=flash+%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0+%D1%80%D0%B0%D0%B2%D0%B5%D0%BD%D1%81%D1%82%D0%B2%D0%B0+%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2% D0%BE%D0%B2&source=bl&ots=25xQfhSQve&sig=_w5kPL1cByeaAajDoWEBepM-DtM&hl=ru&ei=5cqDS6CxNYLG_gbUyNnIAg&sa=X&oi=book_result&ct=result&resnum=7&ved=0CB8Q6AEwBg#v=onepage&q=&f=false)

in4core
23.02.2010, 16:46
Вот спасибо

Zik.
23.02.2010, 18:30
Разве так не проще?
Не?
trace(statusX.toString() == ["NO","NO","YES","NO","NO","NO"].toString());

wvxvw
23.02.2010, 18:41
Разве так не проще?
Не?
trace(statusX.toString() == ["NO","NO","YES","NO","NO","NO"].toString());

А массив тогда зачем? :)

Psycho Tiger
23.02.2010, 22:13
В смысле зачем? Как вариант сверки массивов строк - вполне, но не более.

wvxvw
23.02.2010, 22:37
trace(statusX.toString() == "NO,NO,YES,NO,NO,NO");
Или, еще лучше:
trace("NO,NO,YES,NO,NO,NO" == "NO,NO,YES,NO,NO,NO");
Какой смысл использовать массив, если нужна строка? :)

Добавлено через 8 минут
Да, а вообще в таком случае хорошая практика - это не использовать строки, а булевые величины, записаные как биты одного числа. Т.е. если мы рассматриваем число в двоичной системе счисления, то каждый разряд будет соответствовать булевому значению, так, например, чтобы описать всю ту же последовательность: "NO,NO,YES,NO,NO,NO" -> 001000 -> 2^3 = 8, соответственно, узнать какой из флагов переведен в true:
flags & 1 (последний бит)
flags & 2 (предпоследний)
flags & 4 (пред-предпоследний) и т.д.

in4core
24.02.2010, 03:06
спасибо

Psycho Tiger
24.02.2010, 15:02
Какой смысл использовать массив, если нужна строка?
Нужно сравнить 2 массива, и как вариант сравнение было предложено перевести их в строки и сравнить.