![]() |
Массив. Как удалить несколько элементов.
Перебираю элементы массива в цикле. И тут внезапно по какому-то условию нужно удалить элемент. И так для нескольких элементов.
Вопрос - как наиболее оптимально это сделать? |
Код AS3:
|
FX2000, спасибо, но я не это имел в виду. Переформулировал запрос
|
Можно воспользоваться функцией filter, которая вернет новый массив, собранный из элементов фильтруемого вами по заданному критерию. Вот подробное описание на русском: http://help.adobe.com/ru_RU/AS3LCR/F...l#filter%28%29
|
возможно оптимальнее создавать новый массив
Код AS3:
здесь можно посмотреть про оптимизацию http://gskinner.com/talks/quick/ ЗЫ. В производительность filter не верю, ибо функция |
Код AS3:
Не знаю, как флешь работает с памятью, но быть может лучше вообще не менять размер массива (обнулять удалённые элементы и сдвигать их в конец массива). |
Цитата:
Цитата:
Цитата:
|
Цитата:
Код:
i : int = arr.length;Цитата:
|
Код AS3:
|
Нашел пару тестов производительности actionScript'а, если кому интересно (мне было интересно):
performanceTester Собственно, исходя из результатов тестов, думаю быстрее всего будет так: Код AS3:
PS 1) Количество элементов в result можно поставить равным максимально возможной длине arr (на случай, если все элементы пройдут фильтр успешно) 2) result можно (и нужно) создать заранее и использовать несколько раз 3) если Вам фильтровать 5 значений... =) забудьте о написанном выше |
Интересная ссылка. Сразу вспомнилось http://docs.google.com/present/view?...rvds_0hjb794hr.
А вообще, было бы очень здорово, если бы кто-нибудь собрал подобные рекомендации по увеличению производительности и выложил их, например, в faq. |
| Часовой пояс GMT +4, время: 20:29. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.