2016-10-03 28 views
0

ein Objekt wie diese zu haben:Iterate durch Objektschlüssel in 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  
} 

Was ist der beste Weg, nur die Schlüssel/Wert-Paare von nur Itemnamen bekommen ??, würde ich so etwas wie dies versuchen, aber von Natürlich funktioniert es nicht:

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

Vielen Dank im Voraus!

Antwort

-1

Wenn Sie einen Wert von einem Objekt auf der Basis eines Stringliteral greifen wollen, oder ein Zeichenfolge, müssen Sie [] Notation verwenden, wobei der Wert zwischen [] eine Zeichenfolge ist. Sie können eine Zeichenfolge aus Zeichenfolgenliteralen und Variablen über den Operator + erstellen. Ändern Sie Ihre Zeichenfolge Verkettung zu diesem:

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

Vielen Dank! es funktioniert –

+0

Danke. Ich bin mir nicht sicher, wer das abgelehnt hat. –

0

tat dies mit ihm verwirren nicht, so brauchen könnte um, aber ich glaube, es ist dies sein werde:

req.body["item_name_" + i] 

und

req.body["item_price_" + i] 
2

Statt

req.body.item_name_+i 

Dies funktioniert:

req.body["item_name_" + i] 

Allerdings rate ich Ihnen dringend, Ihren Ansatz zu überdenken, wenn Sie können, und Refactoring Ihre Daten in diese:

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