Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Поиск элемента в массиве (http://www.flasher.ru/forum/showthread.php?t=128335)

Maestro13 05.08.2009 14:23

Поиск элемента в массиве
 
Доброго времени суток! Проблема такая: добавляю элемент в массив, но добавляется он в массив только в том случае если он не был добавлен раньше (это для того чтобы исключить два одинаковых элемента в массиве). Подскажите самый быстрый способ проверки - имеется ли такой элемент в массиве.


Я сделал цикл
Код AS3:

function CheckObject():Boolean{
    for(var i:int=0;i<=array.length-1;i++){
          if(array[i]==object){
          return false
          }
    }
    return true
}

есть ли решение быстрее этого? Просто если массив большой это будет грузить систему

kackbip 05.08.2009 14:27

я бы воспользовался методом Array.indexOf(element):int

Maestro13 05.08.2009 14:32

А, спасибо! Я об этом методе не знал

alatar 06.08.2009 19:36

Также вместо массива можно воспользоваться Dictionary или Object, тогда вообще не прийдется делать поиск.

r_r_f_r 06.08.2009 21:10

Цитата:

Сообщение от alatar (Сообщение 841007)
Также вместо массива можно воспользоваться Dictionary или Object, тогда вообще не прийдется делать поиск.

Придётся, но не вам лично.

CrazyFlasher 06.08.2009 21:53

чтоб не тратить время, есть адобовский класс для этого ArrayUtil. Во флекс sdk он так же есть

borisphen 07.04.2011 17:31

Чтобы не плодить темы, спрошу здесь... А вот если все тоже самое, но нужно получить индекс объекта в массиве по значению его свойства:
Код AS3:

function CheckObject():Boolean{
    for(var i:int=0;i<=array.length-1;i++){
          if(array[i].someProperty==object.someProperty){
          return false
          }
    }
    return true
}

Подскажите пожалуйста более изящный способ.

КорДум 07.04.2011 17:53

Ответ во втором посте этой темы.

borisphen 07.04.2011 20:01

Спасибо!
Туплю нипадеццки )))

Добавлено через 30 минут
Подскажите ответ еще на один глупый вопрос, все то же самое, но справа в сравнении какое то конкретное значение:
Код AS3:

function CheckObjectProp():Boolean{
    for(var i:int=0;i<=array.length-1;i++){
          if(array[i].someProperty==value){
          return true
          }
    }
    return false
}


chuvak2008f 21.06.2011 09:38

Можно ли как то осуществить поиск в двумерном массиве стандартными средствами или надо свою функцию создавать?
Код AS3:

var arr:Array = [[1,2], [3,4], [5,6], [7,8]];

и если стандартными то что будет быстрее
обычный for или forEach

всё всем спасибо я сам ответил на вопрос :DDD
* Array *
for each: 9
for: 26
while: 24
for in: 149

* Vector *
for each: 9
for: 7
while: 11
for in: 199


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

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