Перебор ключей объектов в Javascript

#javascript #javascript-objects #simplecart

#javascript #javascript-объекты #simplecart

Вопрос:

Наличие такого объекта:

 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:

Вместо

 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"   
}
  

Ответ №2:

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

 req.body["item_name_"   i]
  

и

 req.body["item_price_"   i]
  

Ответ №3:

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

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