Использование Value from Option для получения данных из JSON - PullRequest
1 голос
/ 27 апреля 2019

Друзья!У меня есть файл JSON, файл .js и немного HTML.

Я могу отлично прочитать данные из файла json в файле js, и он выводится на консоль.

Итак, у меня есть выпадающий список со всеми 50 состояниями, а значения являются сокращениями состояний.Каждое состояние состояло из 6 различных значений, таких как:

"AK": {
  "I": 0,
  "II": 0,
  "III": 0,
  "IV": 0,
  "V": 0,
  "VI": 0
 }

Я могу утешить данные как таковые: data.AK.II, и это нормально.

У меня проблемы с достижением этого:данные. (значение выбранной опции) .II

   $('select#input_56_3').on('change', function () {
var thisValue = $('select#input_56_3 option:selected').val();
var newValue = data.thisValue.I;
console.log('newValue = ' + newValue);
  });

Это ошибка, которую я получаю, поэтому 'thisValue' встречается с неопределенным.

Uncaught TypeError: Не удается прочитатьсвойство 'I' не определено

Должен ли я преобразовывать его каким-либо образом?Я думаю, что слишком долго на это смотрел.

Ответы [ 2 ]

1 голос
/ 27 апреля 2019

Измените data.thisValue.II на data[thisValue].II, это будет работать.

  • Обозначение в скобках в основном используется, когда в именах клавиш есть пробел, например "full name" и т. Д.
  • Запись Do используется, если вы пытаетесь напрямую получить доступ к значениям в объекте.Если d = {k: 1}, то d.k и d[k] оба в порядке.d = {"k v": 1}, тогда будет работать только d["k v"].
> data = {
...     "AK": {
.....         "I": 0,
.....         "II": 0,
.....         "III": 0,
.....         "IV": 0,
.....         "V": 0,
.....         "VI": 0
.....     }
... }
{ AK: { I: 0, II: 0, III: 0, IV: 0, V: 0, VI: 0 } }
> 
> thisValue = "AK"
'AK'
> 
> data[thisValue].I
0
> data[thisValue].II
0
> 

Следующее действие выдаст исключение (ошибку).

> data.thisValue.II
Thrown:
TypeError: Cannot read property 'II' of undefined
> 
1 голос
/ 27 апреля 2019

Использовать квадратную скобку:

var newValue = data[thisValue].I;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...