12

В переменной itemNumber хранится число Есть объекты типа cart.name1.price, cart.name2.price

Как поместить/подставить переменную на место числа? Может как-то экранировать надо?

cart.name+itemNumber+.price - ругается на точку после +

LEQADA
  • 5,185
KoteDoe
  • 175
  • Вы же понимаете, что это костыль, верно? У вас формат объекта cart явно не совпадает с вашими нуждами. –  Jan 12 '16 at 12:11
  • должна быть такая структура {cars:[car:{name:'Volvo',price:30000},car:{name:'BMW',price:35000}]} от car в данном случае лучше избавится – Serge Esmanovich Jan 12 '16 at 12:22
  • var name = 'name'+itemNumber; console.log(cart[name].price) – mix Jan 12 '16 at 12:28
  • Cтруктура такая, если есть замечания по поводу реализации, выслушаю предложения. name1:{ volume1:{ name:"111", volume:"0,9", price:"100" } }, name2:{ volume1:{ name:"222", volume:"0,9", price:"100" } } – KoteDoe Jan 12 '16 at 12:34
  • @SergeEsmanovich не путайте car и cart :) Идея правильная, разве что в массивах явно указывать ключи нет смысла, но буду считать, что это оговорка. –  Jan 12 '16 at 13:32
  • @D-side А как тогда к ним обращаться без явного индекса? – KoteDoe Jan 12 '16 at 14:01
  • А по какому признаку вы собрались выбирать какую-то конкретную запись из контейнера, не имея её индекса? –  Jan 12 '16 at 14:20
  • @D-side По data атрибуту присваивается индекс. – KoteDoe Jan 12 '16 at 14:59
  • То есть, явный индекс у вас всё-таки есть? ._. –  Jan 12 '16 at 15:02
  • @D-side Так есть. Вопрос же выше был о том как к нему обращаться. Выбрал тот метод исполнения который показался более очевидным в данной задаче. Хотя сейчас вроде бы и это понял. – KoteDoe Jan 12 '16 at 15:04
  • Я говорил про код @SergeEsmanovich, который вообще синтаксически неверен, но содержит правильную идею. У массивов есть числовые индексы, при обращении, конечно, их надо использовать прямо. Их указывать в литералах невозможно (да и бессмысленно). –  Jan 12 '16 at 15:07

1 Answers1

21

Для этого надо использовать скобочную нотацию

cart["name"+itemNumber].price
Grundy
  • 81,538