JSON中weekends数组访问报错:无法读取length属性问题排查
问题分析与修复方案
嘿,这个问题很典型——你犯了个变量混淆的小错误!
你已经通过$.parseJSON(data)把原始的JSON字符串解析成了JavaScript对象,并且存在了json变量里,但循环的时候却还是去访问**未解析的原始字符串data**的weekends属性。字符串本身根本没有weekends这个属性,所以data.weekends是undefined,自然就会报错Cannot read property 'length' of undefined了。
除此之外,你的weekends是数组嵌套数组的结构(每个元素都是["6"]这样的单元素数组),直接打印json.weekends[i]会输出["6"],而不是你想要的6,这部分也需要调整。
修正后的代码
var json = $.parseJSON(data); for (var i = 0, len = json.weekends.length; i < len; i++) { // 取出内层数组的第一个元素,拿到目标值 console.log(json.weekends[i][0]); }
更简洁的遍历方式(可选)
如果喜欢更现代的语法,用forEach遍历会更清爽:
var json = $.parseJSON(data); json.weekends.forEach(function(weekendItem) { console.log(weekendItem[0]); });
这样修改后,Chrome控制台就能正确输出6、8、15啦。
内容的提问来源于stack exchange,提问作者Igor Petev
相关产品推荐
相关产品推荐

