Лучший способ правильно реализовать строку в массиве - PullRequest
0 голосов
/ 07 августа 2011

Предположим, у вас есть массив с количеством строк в ActionScript3, и вы хотите проверить, находится ли тестовая строка в этом массиве. «in» работает только с индексом с массивами в AS3 (который полностью запаздывает, если вы спросите меня), хотя он работает с объектами, но мы не говорим об объектах.

Может ли кто-нибудь улучшить (уменьшить) код, который я сейчас использую? Я надеюсь избежать определения служебной функции - я хотел бы хороший элегантный однострочный.

myArray.filter(function(item:*, i:int, a:Array) { return (item == testString); }).length

Поскольку 0 == false, мы можем использовать его в тесте. Обратите внимание, что область действия testString определена в содержащей функции, инкапсулированной замыканием.

if (allowedProfiles.filter(function(item:*, i:int, a:Array) { return (item == name); }).length){ // yay! }

Ответы [ 2 ]

2 голосов
/ 07 августа 2011

Используйте метод Array.indexOf(), чтобы увидеть, что индекс строки в массиве не равен -1 (не найден):

var myArray:Array = ["hello", "world"];
trace(myArray.indexOf("hello")); // == 0;
trace(myArray.indexOf("goodbye")); // == -1
1 голос
/ 08 августа 2011

Почему бы просто не использовать indexOf () ?

if(myArray.indexOf("testString") != -1) { // it's in there 
...