Здравствуйте, коллеги
Хочу удалить элемент (объект) из 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>>
Здравствуйте, Дюша, Вы писали:
Д>Здравствуйте, коллеги
Д>Хочу удалить элемент (объект) из 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 вы тут вообще не использовали.
для массива всё это должно работать, у вас же объект (хеш).
в объекте нет свойства length
чтобы удалить элемент из объекта, помечайте его как undefined — используйте delete.