2011-12-19 3 views
10

Allexamples di aggiungere nuovi elementi agli array associativi stanno andando in modo "facile" e hanno solo un array monodimensionale - il mio problema di comprensione è disporre di array all'interno di array (o oggetti in array?).Aggiungi elemento agli array associativi di serie

Ho la seguente matrice:

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

due domande: Come generare questo array di array associativi (sì ... oggetto) da zero? Come aggiungere un nuovo elemento a un array esistente?

Grazie per avermi aiutato a capire javascript.

+1

Cosa significa _dal scratch_? – SLaks

+1

Questo potrebbe essere utile: [Javascript: aggiunta a un array associativo] (http://stackoverflow.com/questions/8328508/javascript-adding-to-an-associative-array/8328541#8328541) – jabclab

+0

Bad wording ... "da zero" semplicemente significato - nuovo. Fondamentalmente è come iniziare con un array vuoto e aggiungere elementi ad esso - le risposte rispondono già a questo :-) –

risposta

10

Non sono esattamente sicuro di cosa si intende per "da zero", ma questo dovrebbe funzionare:

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 

Anche se la sintassi che hai postato è un modo perfettamente valida di crearlo "fro m graffio ".

E l'aggiunta di un nuovo elemento funzionerebbe allo stesso modo test.push({..something...});.

4

Questa è una matrice di oggetti.

Si può mettere più oggetti in esso chiamando test.push({ ... })

+0

"array di oggetti" - grazie per aver chiarito! Fondamentalmente oggetti non nominati, a causa del {}? –

+1

@moontear: non esiste un "oggetto con nome". – SLaks

+0

Capito, ci leggerò. –

1

da zero, le seguenti linee creeranno un popolare una matrice con gli oggetti, con il metodo Array.prototype.push:

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

Correggi lo script anche per usare newobj – mplungjan

2
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); 
} 

rende prova pari a

[{label:"name1", value:"data1"}, 
{label:"name2", value:"data2"}, 
{label:"name3", value:"data3"}, 
{label:"name4", value:"data4"}, 
{label:"name5", value:"data5"}]