朋友们!我有一个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”
我应该以某种方式转换它吗?我想我已经盯着这个太久了。
将data.thisValue.II
改为data[thisValue].II
,它会奏效。
- 当键名中有空格时,基本上使用括号表示法,例如
"full name"
等- 如果您直接尝试访问对象中的值,则使用表示法。如果
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
>
使用方括号表示法:
var newValue = data[thisValue].I;