2016-10-03 3 views
0

Имея объект вроде этого:Итерация по клавишам объектов в 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  
} 

Что такое лучший способ получить только пары ключ/значение только имена элементов ??, я хотел бы попробовать что-то подобное, но из конечно, не работает:

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

Заранее благодарим за внимание!

ответ

-1

Если вы хотите, чтобы захватить значение из объекта, основываясь на строковый литерал, или Строка, вам нужно будет использовать нотацию [], где значение между [] является строкой. Вы можете построить строку из строковых литералов и переменных с помощью оператора +. Измените конкатенацию строк следующим образом:

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

Большое спасибо! он работает –

+0

Спасибо. Я не уверен, кто проголосовал за это. –

0

Не проверял это так, возможно, придется возиться с ним, но я считаю, что это будет так:

req.body["item_name_" + i] 

и

req.body["item_price_" + i] 
2

Вместо того

req.body.item_name_+i 

Это будет работать:

req.body["item_name_" + i] 

Однако я настоятельно советую вам пересмотреть свой подход, если вы можете, и реорганизовать данные в этом:

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