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

嵌套for循环满足if SUM条件时数组追加值不生效问题求解

问题根因

你代码中内层循环不执行的核心原因是:当filters[i].$4 === "SUM"时,filters[i].$9不是数组类型,因此filters[i].$9.length返回undefined或0,内层for循环的判断条件a < filters[i].$9.length不成立,循环体直接被跳过,因此内层的if判断和日志都不会触发。

修复方案

你需要对SUM类型和非SUM类型的元素分开处理,SUM类型不需要遍历$9字段,直接为转置数组的每一行对应列赋值即可,代码修改如下:

var transposeArr = new Array()

for (let i = 0; i < filters.length; i++) {
    const isSum = filters[i].$4 === "SUM"
    if(isSum){ 
        console.log("Outer loop : success")
        // SUM类型不需要遍历$9,直接给已有的所有行的当前列赋值
        if (transposeArr.length === 0) {
            // 处理SUM是第一个元素的情况,先初始化一行
            transposeArr.push([])
        }
        transposeArr.forEach(row => {
            row[i] = "Success"
        })
        continue // 跳过后续的非SUM逻辑
    }
   
    // 非SUM类型走原有遍历$9的逻辑
    for(let a = 0; a < filters[i].$9.length;a++){ 
        if(!transposeArr[a]) transposeArr[a] = [];
        transposeArr[a][i] = "other results";
    }
}

效果说明

最终生成的transposeArr结构符合你要求的格式,每一行对应一条数据,每一列对应filters数组的一个元素,SUM类型的列所有行值都是Success,其他列值为other results。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:54:04