Добавить элемент в массив ассоциативных массивов - PullRequest
10 голосов
/ 19 декабря 2011

Все примеры добавления новых элементов в ассоциативные массивы идут «легким» путем и имеют только одномерный массив - моя проблема понимания состоит в том, что массивы внутри массивов (илиэто объекты в массивах?).

У меня есть следующий массив:

var test = [
            {
                value: "FirstVal",
                label: "My Label 1"
            },
            {
                value: "SecondVal",
                label: "My Label 2"
            }
           ];

Два вопроса: Как сгенерировать этот массив ассоциативных массивов (да ... объект) с нуля ?Как добавить новый элемент в существующий массив?

Спасибо за помощь в понимании JavaScript.

Ответы [ 4 ]

10 голосов
/ 19 декабря 2011

Я не совсем уверен, что вы подразумеваете под "с нуля", но это сработает:

var test = [];  // new array

test.push({
                value: "FirstVal",
                label: "My Label 1"
            });  // add a new object

test.push({
                value: "SecondVal",
                label: "My Label 2"
            });  // add a new object

Хотя синтаксис, который вы опубликовали, является вполне допустимым способом его создания "с нуля".

И добавление нового элемента будет работать точно так же test.push({..something...});.

4 голосов
/ 19 декабря 2011

Это массив объектов.

Вы можете поместить в него больше объектов, вызвав test.push({ ... })

2 голосов
/ 19 декабря 2011
var items = [{name:"name1", data:"data1"}, 
             {name:"name2", data:"data2"}, 
             {name:"name3", data:"data3"}, 
             {name:"name4", data:"data4"}, 
             {name:"name5", data:"data5"}]

var test = [];

for(var i = 0; i < items.length; i++){
    var item = {};
    item.label = items[i].name;
    item.value = items[i].data;
    test.push(item);
}

делает тест равным

[{label:"name1", value:"data1"}, 
 {label:"name2", value:"data2"}, 
 {label:"name3", value:"data3"}, 
 {label:"name4", value:"data4"}, 
 {label:"name5", value:"data5"}]
1 голос
/ 19 декабря 2011

С нуля следующие строки создадут массив с объектами, используя метод Array.prototype.push:

var test = [];          // Create an array
var obj = {};           // Create an object
obj.value = "FirstVal"; // Add values, etc.
test.push(obj);
...