2013-04-09 7 views
7

Spero che il giorno ti trovi bene.Cercando di aggiungere più proprietà all'oggetto Javascript utilizzando un ciclo

Quindi ho un oggetto senza proprietà. Sto cercando di aggiungere più proprietà a questo oggetto usando un ciclo. Ogni proprietà aggiunta al loop apparirà nell'oggetto più volte a seconda quante volte il ciclo viene eseguito, con ogni nuova proprietà incrementato di 1.

Così ho qualcosa di simile:

myObject = { }; 

for(i = 0; i < 2; i++){ 
    myObject.propA + i = foo; 
    myObject.propB + i = bar; 
}; 

Che io vuoi ottenere qualcosa del genere:

myObject.propA0 = foo; 
myObject.propB0 = bar; 
myObject.propA1 = foo; 
myObject.propB2 = bar; 

Dare una bella pila di oggetti generati al volo a seconda di quante volte il ciclo viene eseguito. Ma non sembra che lo stia capendo. Quindi, in che modo posso alimentare la variabile dal loop alla proprietà quando viene creata e assegnata?

risposta

19

Provare a utilizzare la notazione parentesi quadra per i nomi

myObject['propa' + i] = foo; 
+0

Questo in effetti lo ha fatto, molto obbligato. –

5

Utilizzare il metodo array-accesso per impostare le proprietà.

myObject = { }; 

for(i = 0; i < 2; i++){ 
    myObject['propA' + i] = foo; 
    myObject['propB' + i] = bar; 
}; 
+0

Ciò si è dimostrato utile, alcuni degli oggetti nel mio progetto corrente funzionano meglio come gruppi di array. –

9

Come altri utenti che hanno detto, è necessario utilizzare la notazione staffa per fare riferimento alle proprietà dai loro stringhe dei nomi:

myObject['propA' + i] = 'foo'; 

Ma perché non si utilizza un matrice di oggetti, invece di un singolo oggetto con nomi di proprietà numerati simili? Qualcosa di simile a questo:

var myArray = []; 
for(i = 0; i < 2; i++){ 
    myArray.push({ 
     propA: 'foo', 
     propB: 'bar' 
    }); 
}; 

Questo dovrebbe produrre:

[ 
    { propA: 'foo', propB: 'bar'}, 
    { propA: 'foo', propB: 'bar'} 
] 

Si guarda modo più pulito, a mio parere.