Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вопрос по [in] и [Array] (http://www.flasher.ru/forum/showthread.php?t=147081)

ERrorMAKros 25.11.2010 17:33

Вопрос по [in] и [Array]
 
Добрый день,

Пробую вот такую вот запись:
Код AS3:

var myArr:Array = [10,20,50];
var myNum:int = 10;
 
if(myNum in myArr)trace(true)
else trace(false);

Данный пример вернет результат false, потому что данная запись отрабатывает как проверка существования индекса массива под номером myNum. Это не то что мне нужно, скорее - наоборот...!!

...подскажите пожалуйста, существует ли возможность булевой проверки существования значения в массиве без всевозможных циклических переборов значений массива. В данном случае меня совершенно не волнует позиция (индекс) значения в массиве, а только - его существование. Если не ошибаюсь, то в других языках (Delphi) данная запись сверялась бы не с номерами индексов массива, а именно с его значениями. Хотелось бы иметь на вооружение короткий вариант проверки существования значения в массиве.

КорДум 25.11.2010 17:37

indexOf? Но он тоже основан на циклах, только не мы их пишем.

Zebestov 25.11.2010 17:53

Array позволяет делать такой бардак:

Код AS3:

var myArr:Array = [];
myArr[10] = true;
myArr[20] = true;
myArr[50] = true;
 
var myNum:int = 10;
 
if (myArr[myNum]) trace(true);
else trace(false);

Можно организовать подобным образом основной массив.
Можно создать вспомогательный массив с такой структурой, если основной все же должен иметь изначально описанную структуру (нормальную т.е.)

alatar 25.11.2010 18:17

Цитата:

Можно создать вспомогательный массив с такой структурой, если основной все же должен иметь изначально описанную структуру (нормальную т.е.)
А смысл в таком случае заводить массив? Object или Dictionary в таком случае справятся лучше.

ERrorMAKros 25.11.2010 18:31

Люди, индексы массива меня совсем не интересуют, меня интересует вхождение значения в любом элементе массива. Это можно сравнить к примеру с такой задачей, как:
есть ли буква "а" в слове "паровоз". Т.е. мне не важно в какой позиции слова она находится, главное узнать есть ли она там или нет за минимальное кол-во строк (желательно - одной строкой, что бы это можно было гибко применить в if условии).

2 КорДум: Благодарю, indexOf - то что нужно!!!!

goodguy 25.11.2010 18:34

in array выполняется циклом, вам он никак не поможет. Это аналог (var i=0; i < array.length; i++) только короче запись, и как уверют гуру, выполняется процентов на 30 быстрее (хотя разницу при коротких массивах заметить невозможно)
Код AS3:

for (var i in array) {
 
}

Цитата:

существует ли возможность булевой проверки существования значения в массиве без всевозможных циклических переборов значений массива.
элементарно:
Код AS3:

if (someArray.indexOf(someVar) > -1) {
      return true;
} else {
      return false;
}


-De- 25.11.2010 18:37

а почему вы решили, что indexOf не перебирает значения?

alatar 25.11.2010 18:39

тогда уже одной строчкой :)
Код AS3:

return someArray.indexOf(someVar) > -1;


cleptoman 25.11.2010 18:41

goodguy,
Код AS3:

return (someArray.indexOf(someVar) > -1)

- так короче )

Добавлено через 32 секунды
alatar )

goodguy 25.11.2010 18:43

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

Цитата:

а почему вы решили, что indexOf не перебирает значения?
Это не имеет значения. Главное, что самому код перебора писать не нужно.


Часовой пояс GMT +4, время: 12:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.