Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Deleting array elements


Автор: Cheba 22.2.2006, 17:22
Это не то, чтобы вопрос, просто не понятно как-то... Вот подумал, что, может, кто-то мне расскажет от чего да почему...

Для начала кусочек доки ().

Цитата(Core JavaScript 1.5 Reference)
When you delete an array element, the array length is not affected. For example, if you delete a[3], a[4] is still a[4] and a[3] is undefined.

When the delete operator removes an array element, that element is no longer in the array. In the following example, trees[3] is removed with delete.

Код
trees=new Array("redwood","bay","cedar","oak","maple")
delete trees[3]
if (3 in trees) {
   // this does not get executed
}


If you want an array element to exist but have an undefined value, use the undefined keyword instead of the delete operator. In the following example, trees[3] is assigned the value undefined, but the array element still exists:

Код
trees=new Array("redwood","bay","cedar","oak","maple")
trees[3]=undefined
if (3 in trees) {
   // this gets executed
}


Совственно все так и происходит - при удалении элемента массива его там больше нет, но длина массива не изменяется. Почему?

Вот у меня такая штука происходит... Сначала делается a.push(Object). Потом, когда этот объект больше не нужен, он удаляется следующим образом:
index = a.indexOf(Object);
delete a[index];

Но чтобы сбросить длину массива приходится прибегать к злостного вида приемам. Вообще-то это не критично, но кто его знает... У меня этот скрипт может работать очень долго и кто знает что там может случиться...

Вот... Пожаловался... smile

Автор: Sardar 23.2.2006, 03:10
Зря конечно так наворотили, но вообщем есть две ситуации, когда значение физически присутствует в массиве, пусть и undefined, и когда значения наоборот физически нет, тогда при выборке берёться undefined как значение. Что бы удалить элемент из массива и при этом "сдвинуть" все другие, пользуй splice метод.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)