如何使用变量作为key查询JSON对象中的指定元素
解决方案
你遇到的是两个典型的JS对象访问和JSON使用错误,按以下方式修正即可:
- 你要访问的是JSON解析后得到的
load对象,而不是原始的JSON字符串names - 要使用变量作为键名查询对象属性,不能用点语法,需要改用方括号语法,方括号内可以传入变量、表达式,会自动读取值作为查询的键名。
修正后的完整代码如下:
const names = ` { "Joe": { "nat": "American", "hair": "brown" }, "Peter": { "nat": "German", "hair": "blond" } } `; const load = JSON.parse(names); const search = "Joe"; // 方括号内传入变量search,会自动读取变量值作为键查询 console.log(load[search]);
运行后会输出Joe对应的属性对象:{ nat: 'American', hair: 'brown' },如果要直接打印名字Joe,直接输出search变量即可。
额外优化建议
- 可以提前校验键是否存在,避免查询不存在的键返回undefined的问题:
if (load.hasOwnProperty(search)) { console.log('查询结果:', load[search]) } else { console.log('没有找到对应内容') }
内容的提问来源于stack exchange,提问作者polelord
相关产品推荐
相关产品推荐

