![]() |
delete Array[0]
ребят, мучаюсь с одной гидрой... - есть массив, при каком-то событии я внего добавляю элемент
Код:
arr.push("pex")Код:
delete arr[0]проблема: при повоторном пересчете выдается та же самая длина, что и до удаления элемента !!! как с этим справиться ? |
Код:
arr.splice(i, 1)В твоём случае Код:
arr.splice(0, 1) |
Код:
delete arr[0]; |
при удалении всеравно остается ячейка, которая выдается как undefined :(
|
Еще раз прочитайте 3-ый пост и обратите внимание на сочетание ЗНАЧЕНИЕ ЭЛЕМЕНТА.
|
А после 3-го прочитай 2-ой и сделай необходимые изменения.
|
Но длина-то остается неизменной ! мне нужно чтобы она сокращалясь !
|
Цитата:
|
все, понял :) а если одну ячейку удалять, то будет просто arr.splice(1,1) ?
|
Цитата:
|
Поди всё действо в цикле производится(?)... Я тоже давным-давно задавал подобный вопрос - как удалить элемент массива в цикле(суть - мувики-кнопки в цикле, при нажатии на какой нить - он должен удаляться из массива, который(массив) содержит ссылки на эти мувы-кнопки. Мувик удаляется, ссылка на мувик из массива удаляется, Но место из под ссылки остается...) Вразумительных(действенных) методов не прозвучало... Я её решил по другому... И splice в цикле не пашет(в MX по крайней мере)... Точнее он удаляет объект, но место из под него остается... Когда трейсишь массив, то получалось вида - mov1, mov2,mov3,,mov5,mov6,mov7... и т.п. mov4 удалился, но место из под него оставалось. Пользовался splice, проверял на тип содержимого, что бы не нужный затем удалить, но толлку было мало... Хотя нашел обходной и более простой путь для моей поставленной задачи...
|
2 sem1313: в это к чему написали?
|
К тому, что объект из массива удаляется, но место из под него остается(length() - та же самая до удаления, и после). Это случается, или случалость в MX2004, именно в цикле for...
З.Ы. Сорри, если я не правильно понял вопрос автора топика... |
Цикл тут не причем.
|
Где автор топика?(!)...
Разьясните конкретные обстаятельства... данного (судебного) дела... З.Ы. Предположения по поводу цикла for возникли именно потому, что splice в ентом цикле не "совсем корректно" работает... З.Ы.Ы. Если splice используется без каких либо циклов, то значит, что то автор путает, не то делает, есче какие нить эпитеты... |
sem1313, не надо шум поднимать, если у вас возникла проблема, создайте топик, выложите туда исходник и мы его обсудим.
|
iNils, я давным-давно разобрался с "этой" проблемой, но косвенно, и по моему, очень легко, и быстро.
Я не требую и не прошу помощи... Я эту траблу решил совсем по другому, без использования циклов. А почему я здесь ответил, то это потому, что встречался с такой же ситуевиной, её прямо не решил, но поступил по другому(без массивов), и в общем то считаю, что поступил лучше... Ну в принципе суть вопроса не решена...(хотя мне это не суть важно)... |
Суть в том, что у вас была другая проблема, не имеющая отношения к данному топику.
|
length представляет не количество элементов в массиве, а индекс следующего за крайним.
|
Цитата:
|
Угу, только этого самого "следующего за крайним" и нету.
sem1313, Код:
anyArray = [1,2,3,4,5,6,7];Или: Код:
anyArray = [1,2,3,4,5,6,7]; |
Цитата:
Для хеша в принципе логичнее владеть количеством реальных элементов, а не "длиной списка числовых индексов". Полагаю, скидка была на специфичность Array. Цитата:
... Чтобы быть в курсе всех "реальных" детишек хеша во флеше, нужно или строго следить за индексами, или учитывать их самому. Вариаций на тему много. Иногда можно и не учитывать вовсе -- из первого сообщения топика не ясно, в чём роль length. Может быть, for-in проканал бы. |
Кстати, splice, насколько мне помнится, весьма медленная операция.
Автор, опиши полную задачу. |
| Часовой пояс GMT +4, время: 18:48. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.