Итерация по ключам объектов в 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;
}
Заранее спасибо!
3 ответа
Решение
Если вы хотите получить значение из объекта на основе строкового литерала или строки, вам нужно использовать []
обозначение, где значение между []
это строка Вы можете построить строку из строковых литералов и переменных через +
оператор. Измените конкатенацию строк следующим образом:
cart += req.body["item_name_" + i]
+ " "
+ req.body["item_price_" + i];
Вместо
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"
}
Не проверял это, поэтому, возможно, придется возиться с этим, но я верю, что это будет так:
req.body["item_name_" + i]
а также
req.body["item_price_" + i]