JavaScript中如何使用变量作为键获取JSON解析后对象的对应数据
问题原因分析
- 第一种写法的问题:JS中使用
.点语法访问对象属性时,.后面的内容会被当做固定的属性名字面量处理,不会解析为变量,所以codes.e实际是在访问codes里名为e的属性,而非变量e存储的字符串对应的属性。 - 第二种写法的问题:模板字符串不支持直接拼接对象的点语法表达式,属于非法语法,本身就会触发报错。
正确实现方式
使用方括号属性访问语法即可,方括号内部的表达式会被计算求值,最终结果会作为属性名去读取对象的对应值:
let e = "T9R3P5YE"; // 这里改成你实际要读取的、存在于codes对象中的键名,原示例中的"KA8AL9AE"不在当前codes的键列表里,会返回undefined let codes = '{"T9R3P5YE": "10", "8HAW69VC": "20"}' codes = JSON.parse(codes) // 核心写法:用方括号包裹变量 console.log(codes[e]) // 输出10
注意:如果你需要访问的键
KA8AL9AE确实存在,只需要把该键值对加到原JSON字符串中即可,读取逻辑还是用codes[e]。
内容的提问来源于stack exchange,提问作者DarkInk
相关产品推荐
相关产品推荐

