Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Массив объектов (https://javascript.ru/forum/misc/52602-massiv-obektov.html)

voodoo_dn 26.12.2014 14:26

Массив объектов
 
Добрый день!
Подскажите, мне надо создать ассоциативный массив объектов.

obj = { a: 1, b: 2, c:3 } (объектов будет много)
и добавить их в ассоциативный массив
list[i] = obj;

но когда делаешь typeof(list) - возвращает object. и у меня не получатся удалить элемент через splice.

В общем, помогите :)

ruslan_mart 26.12.2014 14:38

Цитата:

Сообщение от voodoo_dn
typeof(list) - возвращает object

var list = [];

if(list instanceof Array) {
    alert('list является массивом');
}
else {
    alert('list не является массвом');
}

voodoo_dn 26.12.2014 14:51

Допустим элемент имеет индекс 'ololo@lolo.ololo', в массиве list.
list.splice('ololo@lolo.ololo', 1);

результата никакого. элемент в массиве.

voodoo_dn 26.12.2014 15:13

Т.е. я не могу создать ассоциативный массив с доступом по list['ololo@lolo.ololo'] ?

Aetae 26.12.2014 15:32

voodoo_dn, в js есть массивы - с числовыми индексами и есть объекты - со строковыми ключами. "Ассоциативных массивов" нет, подобную роль исполняют объекты. Чтобы удалить элемент из объекта - следует использовать delete:
var list = {}, 
    obj = { a: 1, b: 2, c:3 }, 
    i = "ololo";

list[i] = obj;

alert(JSON.stringify(list, null, '\t'))

delete list['ololo'];

alert(JSON.stringify(list, null, '\t'))
Следует также помнить, что объект в js остаётся в памяти до тех пор пока на него существует хотябы одна ссылка. Т.е. после удаления из list объект всё ещё доступен по ссылке через переменную obj.

Aetae 26.12.2014 15:44

Rise, движок распидорасило от строки 'ololo@lolo.ololo' :)
Код:

[JS]var a = 'ololo@lolo.ololo';[/JS]
var a = 'ololo@lolo.ololo';


Часовой пояс GMT +3, время: 12:26.