Использование eval для ссылки на массив

#javascript #arrays

#javascript #массивы

Вопрос:

Это звучит довольно просто, но я не могу использовать «динамическую» переменную для ссылки на массив. Скажем, я хотел вытащить «Brent_Chart_1», чтобы найти его в массиве, я бы сделал что-то вроде этого:

 data[i].Brent_Chart_1
  

Предположим, что я хочу перебрать несколько категорий, а также хотел вытащить «WTI_Chart_1». Я бы хотел сделать что-то вроде этого:

 $comm_array = array("Brent","WTI");

for(var comm; comm = comm_array.pop();){

...

data[i].eval(comm   "_Chart_1")

...

}
  

Однако это, похоже, не работает. Как я должен создавать эту ссылку «динамически»?

Редактировать:

Вот дополнительный контекст по этому вопросу:

 if (data[i].ID == 39) {
    console.log(comm);
    $("#"   comm   "_Chart_1").highcharts('StockChart', jQuery.parseJSON(data[i][comm   '_Chart_1']));
} else {
    console.log(comm);
    $("#"   comm   "_Chart_1").highcharts(jQuery.parseJSON(data[i][comm   "_Chart_1"]));
}

comm   1
}
  

Комментарии:

1. Не используйте eval без необходимости!

2. Вы могли бы использовать цикл while вместо цикла for в этом экземпляре, например while(comm = comm_array.pop())

Ответ №1:

Используйте обозначение в скобках следующим образом:

 data[i][comm   "_Chart_1"]
  

Ответ №2:

Я думаю data[i][comm "_Chart_1"] , будет работать

Комментарии:

1. data[i][«Brent_Chart_1»] работает, но не data[i][comm «_Chart_1»]

2. Это правильный канон, и он сначала дал мне WTI. Журнал вернул переменные, как и ожидалось … а именно Brent и WTI

3. Массив построен правильно, так как data[i][«Brent_Chart_1»] работает… но не data[i][comm «Brent_Chart_1»] . Мы также установили, что comm в порядке, поскольку он отображается нормально в журнале консоли

4. ТАКЖЕ: я замечаю, что в журнале ошибок я получаю следующее: «Неперехваченная ошибка синтаксиса: неожиданный конец ввода»

5. канон, это была опечатка, я имел в виду [comm «_Chart_1»] . Я думаю, проблема в том, что код не считает comm sring . Это потому, что он был извлечен из массива?