使用Option中的Value从JSON获取数据

问题描述 投票:1回答:2

朋友们!我有一个json文件,一个.js文件和一些html。

我可以很好地从js文件中的json文件中读取数据,并将其输出到控制台。

所以我有一个包含所有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'未定义。

未捕获的TypeError:无法读取未定义的属性“I”

我应该以某种方式转换它吗?我想我已经盯着这个太久了。

javascript jquery json object
2个回答
1
投票

data.thisValue.II改为data[thisValue].II,它会奏效。

  • 当键名中有空格时,基本上使用括号表示法,例如"full name"
  • 如果您直接尝试访问对象中的值,则使用表示法。如果d = {k: 1}然后d.kd[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
投票

使用方括号表示法:

var newValue = data[thisValue].I;
© www.soinside.com 2019 - 2024. All rights reserved.