[JS] Удаление элемента из array
От: Дюша Россия http://www.danfoss.com/russia
Дата: 20.01.09 09:45
Оценка:
Здравствуйте, коллеги

Хочу удалить элемент (объект) из Array.
Происходит все примерно так:

var myArray = new Array();    

myArray["someTextKey#1"] = someObj1;
myArray["someTextKey#2"] = someObj2;
myArray["someTextKey#3"] = someObj3;

//на этом этапе myArray.length=0. Почему?
//и, соответственно, если хочу удалить второй элемент, ничего не выходит:
myArray.splice(1,1);


Меня бы более чем устроило удаление по ключу, но подходящих методов не вижу.
... << RSDN@Home 1.2.0 alpha 4 rev. 1052>>

Re: [JS] Удаление элемента из array
От: Панда Россия  
Дата: 20.01.09 11:13
Оценка:
Здравствуйте, Дюша, Вы писали:

Д>Здравствуйте, коллеги


Д>Хочу удалить элемент (объект) из Array.

Д>Происходит все примерно так:

Д>
Д>var myArray = new Array();    

Д>myArray["someTextKey#1"] = someObj1;
Д>myArray["someTextKey#2"] = someObj2;
Д>myArray["someTextKey#3"] = someObj3;

Д>//на этом этапе myArray.length=0. Почему?
Д>//и, соответственно, если хочу удалить второй элемент, ничего не выходит:
Д>myArray.splice(1,1);
Д>


Д>Меня бы более чем устроило удаление по ключу, но подходящих методов не вижу.


1. Чтобы удалить элемент, присвойте ему значение undefined
myArray["someTextKey#2"] = undefined;

2. length применима к массивам с числовыми индексами. Вы же завели массив, но используете его не как массив, а как объект (яваскрипт это позволяет, поскольку в нем массивы являются одновременно и объектами).
Можете попробовать изменить "var myArray = new Array();" на "var myArray = new Object();" — ничего не изменится, поскольку функциональность именно Array вы тут вообще не использовали.
Re[2]: [JS] Удаление элемента из array
От: Панда Россия  
Дата: 20.01.09 11:19
Оценка:
Вот так:

Д>>[java]

Д>>var myArray = new Array();
Д>>myArray[0] = someObj1;
Д>>myArray[1] = someObj2;
Д>>myArray[2] = someObj3;
Д>>myArray.splice(1,1);

должно сработать и удалить второй элемент. А если ключи не числовые, то это не элементы массива, а поля объекта. С ними так нельзя.
Re[2]: [JS] Удаление элемента из array
От: Панда Россия  
Дата: 20.01.09 11:35
Оценка: 4 (1) +1
П>1. Чтобы удалить элемент, присвойте ему значение undefined

Немного наврал, удаляется элемент оператором delete

delete myArray["someTextKey#2"]
Re: [JS] Удаление элемента из array
От: EugeneIvanov Земля http://e-ivanov.ru/portfolio/
Дата: 20.01.09 13:14
Оценка: 4 (1)
для массива всё это должно работать, у вас же объект (хеш).

в объекте нет свойства length

чтобы удалить элемент из объекта, помечайте его как undefined — используйте delete.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.