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

如何修复findLargestNumbers函数的空数组处理问题?

修复提取二维数组非空子数组最大值的函数问题

问题根源

你的函数在处理包含空数组的输入时,返回结果会包含空占位符,而非仅保留有效最大值。比如输入[[], [1, 2], []],当前函数返回[empty, 2, empty],不符合预期的[2]。

造成这个问题的核心原因是:你使用k[i] = ans给结果数组赋值,当跳过空数组时,对应索引的位置会被留空,最终结果数组的长度和原二维数组完全一致,而非仅包含有效结果。

修复方案

把赋值方式从k[i] = ans改为k.push(ans),这样每次找到非空子数组的最大值时,直接将值追加到结果数组的末尾,不会留下空占位符。

修复后的完整代码

function findLargestNumbers(arrayOfArrays) {
    let k = [];
    for(let i = 0 ; i < arrayOfArrays.length ; i++){
        if(arrayOfArrays[i].length === 0){ 
            continue ;
        }
        let ans = arrayOfArrays[i][0];
        for(let j = 0 ; j < arrayOfArrays[i].length ; j++){
            ans = Math.max(ans, arrayOfArrays[i][j]);
        }
        k.push(ans);
    }
    return k;
}

可选优化方案

可以利用Math.max()的展开语法简化内层循环,省去手动遍历子数组找最大值的步骤,让代码更简洁:

function findLargestNumbers(arrayOfArrays) {
    const result = [];
    for (const subArr of arrayOfArrays) {
        if (subArr.length === 0) continue;
        result.push(Math.max(...subArr));
    }
    return result;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:52:24