Во-первых, не используйте Array
в качестве имени переменной - это объект массива javascript, вы не хотите его переопределять
Во-вторых, начиная с Array = {}
, называя его любой вариациейслово Array
вводит в заблуждение, это объект
В-третьих, вы создали Array.elements в виде массива, но затем заполнили только индексы 0, 3 и 4 - поэтому вы создали разреженный массивдля начала
В-четвертых, написанный вами код даже не запускается, так как вы пытаетесь присвоить .name
elements[0]
, но в этот момент elements[0]
не определено, так что вы получитес ошибкой, и код тут же перестает работать
То, что вы хотите, выглядит так: Array.elements = {}
- тогда вы можете добавить / удалить любой ключ , который вы хотите
Например
var obj = {};
obj.elements = {};
obj.elements[0] = {};
obj.elements[0].name = "Sally";
obj.elements[0].age = "20";
obj.elements[3] = {};
obj.elements[3].name = "Jack";
obj.elements[3].age = "21";
obj.elements[4] = {};
obj.elements[4].name = "Megan";
obj.elements[4].age = "22";
delete obj.elements[3];
for (let i in obj.elements) {
console.log('Number', i, 'is', obj.elements[i].name);
}
При использовании элементов в качестве массива вы увидите, что после первоначального заполнения массива у вас уже есть два undefined для начала - смотритепервый вывод консоли
Примечание: однако цикл for...in
пропустит эти undefined элементы
Также обратите внимание, что неопределенные элементы на самом деле являются "пустыми слотами" - т.е. если выПроще говоря obj.elements[3] = undefined
это не то же самое, что delete obj.elements[3]
var obj = {};
obj.elements = [];
obj.elements[0] = {};
obj.elements[0].name = "Sally";
obj.elements[0].age = "20";
obj.elements[3] = {};
obj.elements[3].name = "Jack";
obj.elements[3].age = "21";
obj.elements[4] = {};
obj.elements[4].name = "Megan";
obj.elements[4].age = "22";
console.log(obj.elements)
delete obj.elements[3];
console.log(obj.elements)
for (let i in obj.elements) {
console.log('Number', i, 'is', obj.elements[i].name);
}