2016-10-03 4 views
0

Avoir un objet comme celui-ci:Itérer par les touches d'objets en Javascript

req.body = { 
    currency : "USD", 
    item_name_1: "something", 
    item_price_1: "something else", 
    item_name_2: "something", 
    item_price_2: "something else", 
    item_name_3: "something", 
    item_price_3: "something else", 
    address: "some address" 
    itemCount: 3  
} 

Quelle est la meilleure façon d'obtenir que les paires clé/valeur de seulement les noms des éléments ??, je voudrais essayer quelque chose comme ça mais Bien sûr, cela ne fonctionne pas:

var cart= ""; 
for (var i=1; i<= req.body.itemCount;i++){ 
    cart += req.body.item_name_+i+ 
     " "+req.body.item_price_+i;  
} 

Merci d'avance!

Répondre

-1

Si vous souhaitez saisir une valeur d'un objet en fonction d'une chaîne littérale, ou Chaîne, vous devrez utiliser la notation [] où la valeur entre les [] est une chaîne. Vous pouvez créer une chaîne à partir des littéraux de chaîne et des variables via l'opérateur +. Changez votre concaténation de chaîne à ceci:

cart += req.body["item_name_" + i] 
     + " " 
     + req.body["item_price_" + i];  
+0

Merci beaucoup! cela fonctionne –

+0

Merci. Je ne sais pas qui a voté contre cela. –

0

n'a pas vérifié cela pourrait donc besoin de salir avec elle, mais je crois que ce sera ceci:

req.body["item_name_" + i] 

et

req.body["item_price_" + i] 
2

Au lieu de

req.body.item_name_+i 

Cela fonctionnera:

req.body["item_name_" + i] 

Cependant, je vous conseille vivement de repenser votre approche si vous le pouvez, et Refactor vos données dans ce:

req.body = { 
    currency : "USD", 
    items: [ 
     { name: "something", price: "something else" }, 
     { name: "something", price: "something else" }, 
     { name: "something", price: "something else" } 
    ], 
    address: "some address" 
}