首页 > 解决方案 > 使用 Value from Option 从 JSON 中获取数据

问题描述

朋友们!我有一个 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'遇到未定义。

未捕获的类型错误:无法读取未定义的属性“I”

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

标签: javascriptjqueryjsonobject

解决方案


更改data.thisValue.IIdata[thisValue].II,它将起作用。

  • 当键名中有空格时,基本上使用括号表示法,例如"full name"等。
  • 如果您直接尝试访问对象中的值,则使用 Do 表示法。如果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
> 

推荐阅读