You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript访问嵌套JSON对象内层firstName等字段的问题

问题根源

你的嵌套属性访问顺序存在逻辑错误:
rowNum是外层循环遍历class.seating拿到的行名字符串,值为"FirstRow"、"SecondRow"这类格式。你写的rowNum[index]本质是读取字符串的第index位字符,比如index为0时返回的是"F",class.seating下不存在名为"F"的属性,因此访问结果为undefined,再读取firstName属性就会抛出对应报错。

正确实现代码

将属性访问的层级顺序调整即可,修正后的循环逻辑如下:

// 建议把变量名从class改成selectedClass,class是JS保留关键字,避免潜在报错
let selectedClass = classes[classesAvailable.value];

for(rowNum in selectedClass.seating){
    // 先拿到当前行对应的所有学生集合
    const currentRow = selectedClass.seating[rowNum];
    for(index in currentRow){
        console.log(index);
        // 直接从当前行集合中读取对应索引的学生信息
        console.log(currentRow[index].firstName);
        console.log(currentRow[index].collegeMajor);
    }
}

可选优化

遍历对象属性时可增加自有属性判断,避免读取到原型链上的异常属性:

for(rowNum in selectedClass.seating){
    if(!selectedClass.seating.hasOwnProperty(rowNum)) continue;
    const currentRow = selectedClass.seating[rowNum];
    for(index in currentRow){
        if(!currentRow.hasOwnProperty(index)) continue;
        console.log(currentRow[index].firstName, currentRow[index].collegeMajor);
    }
}

内容的提问来源于stack exchange,提问作者Nicepeach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:57:03