![]() |
метод splice как избавится от NaN
Создаю массив,
в цикле for проверяю совпадения элементов, если произошло совпадение(например первый элемент и второй) то удаляю элемент методом мойМассив.splice(element1,1), далее trace(мойМассив) и получаю на месте "удаленного" значения NaN, читал что данный метод удаляет элемент но почему оставляет NaN,как можно от него избавиться? |
Никакого NaN там не остается. Просто скорее всего цикл не правльно написан.
Представьте такую ситуацию: перебираем массив циклом в сторону увеличения, и тут, по пути, сносим один элемент. Массив стал короче, все индексы "съехали" назад, а цикл продолжает перебирать его вперед. Масив заканчивается, а цикл продолжает работать. На что он наткнется? Нужно изменять всю логику цикла. Не видя кода этого цикла, сложно сказать, как конкретно его нужно переписать. |
вместо
for (var i:int=0; i<_len; i++) используйте for (var i:int=_len-1; i>=0; i--) тогда и удалять можно будет |
Код AS3:
|
Плюсую caseyryan и olexandr. Только логичнее и оптимальнее использовать не for уже.
Код AS3:
|
Совсем не логичнее и не вполне (не со всех точек зрения) более оптимально, а только несколько быстрее во время выполнения.
|
Цитата:
По-моему как раз с while в таком случае логичнее. Хотя бы потому, что запись короче. Да и компилятор все равно все for превратит в while |
| Часовой пояс GMT +4, время: 12:18. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.