在JavaScript中遍历JSON表遇取值问题求助
解决JavaScript中JSON结构访问返回Undefined的问题
嘿,我一眼就看出问题出在哪了!你的data.languages是一个数组,不是你以为的普通对象,这就是为什么你直接用点语法访问english会得到undefined的原因。
先看你的数据结构细节
你的languages.js里定义的结构是这样的(简化版):
var data = { "languages" : [ // 这里的方括号[]表示这是一个数组 { "english" : { "dontRefresh" : "Do not refresh the page!" }, "russian" : { ... } } ] }
注意languages对应的是一个只有1个元素的数组,数组里的第一个元素才是包含english、russian这些语言对象的容器。
正确的取值方式
你之前尝试的data.languages.english是错误的,因为数组不能直接通过属性名访问内容,得先通过索引拿到数组里的对象:
// 先取数组的第一个元素(索引0),再访问english下的dontRefresh console.log(data.languages[0].english.dontRefresh); // 或者用括号语法也可以 console.log(data.languages[0].english['dontRefresh']);
这样就能正确输出Do not refresh the page!了。
调试小技巧
以后遇到这种[Object object]看不清结构的情况,可以用JSON.stringify()把对象转成字符串打印,就能清晰看到完整结构:
console.log(JSON.stringify(data.languages, null, 2));
这样输出的内容会格式化显示,你能一眼分辨出哪些是数组(方括号),哪些是对象(大括号),避免再犯类似的错误。
内容的提问来源于stack exchange,提问作者Zackyy
相关产品推荐
相关产品推荐

