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

JS遍历嵌套JSON报错TypeError 无法读取undefined的orderTotal求助

问题描述

接口端点返回嵌套结构JSON响应,遍历数据集打印控制台值时前期运行正常,遍历到末尾抛出如下错误:

TypeError: Cannot read properties of undefined (reading 'orderTotal')

对应实现代码如下,经多轮资料查阅未定位问题根因:

function updateChart() {
        
    async function fetchData() {
        const url = '/admin/Dashboard/GetEvents';
        const response = await fetch(url);

        const datapoints = await response.json();
        console.log(datapoints);

        return datapoints;
    }

    fetchData().then(datapoints => {
    
        var orderTotal=0.0;
        
        for (let i = 0; i < datapoints.length; i++) {
            for (let j = 0; j <= datapoints[i].length; j++) {
                for (let k = 0; k < datapoints[i].length; k++) {
                    orderTotal+=datapoints[j][k].orderTotal;
                }
            }
            console.log(orderTotal);
            console.log(j);
            console.log(k);
        }

        myChart.update();

    }).catch(e => {
        console.log(e);
    });
}

报错截图

问题根因

循环逻辑存在两处明确错误,直接导致访问不存在的数组下标,拿到undefined值后读取orderTotal属性触发报错:

  • 第二层循环终止条件错误:数组合法下标范围为0 ~ 数组长度-1,写法j <= datapoints[i].length会让j最终等于数组长度,该下标对应的元素本身就是undefined
  • 数组访问路径错误:三层循环的遍历维度为i对应最外层数组、j对应第二层数组、k对应最内层元素,但取值时写为datapoints[j][k].orderTotal,完全跳过i维度,遍历逻辑和数据嵌套结构不匹配
修复参考

先确认接口返回的嵌套数据层级,再对应调整循环逻辑。以「最外层数组 -> 第二层分组数组 -> 携带orderTotal属性的元素对象」的三层结构为例,修复后代码如下:

fetchData().then(datapoints => {
    let orderTotal = 0.0;
    // 遍历最外层数组
    for (let i = 0; i < datapoints.length; i++) {
        // 终止条件用<,避免越界,遍历第二层数组
        for (let j = 0; j < datapoints[i].length; j++) {
            // 若第二层元素直接是业务对象,无需第三层k循环
            // 取值时必须带上i层级,匹配嵌套结构
            const currentTotal = datapoints[i][j]?.orderTotal ?? 0;
            orderTotal += currentTotal;
        }
    }
    console.log('累计orderTotal值:', orderTotal);
    myChart.update();
}).catch(e => {
    console.log(e);
});

优化提示:如果接口返回数据存在字段缺失、空值等异常情况,可使用可选链?.和空值合并??做兜底处理,避免单条异常数据中断整个遍历流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:30:52