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

JS嵌套数组取各子数组最大值函数处理负数异常问题排查

问题原因分析
  • 最大值比较变量nw初始化逻辑错误:nw被定义在外层循环之外,且初始值硬编码为0。当遍历的子数组所有元素均为负数时,没有元素满足w[rr] > nw的判断条件,nw会保持初始值0,导致全负数子数组的最大值计算错误。
  • 最大值变量未按子数组重置:每处理完一个子数组后,没有重置nw的值,前一个子数组的最大值会保留,污染后续子数组的计算逻辑,若后续子数组的最大值小于前一个子数组的最大值,也会出现结果错误。
修复方案

将nw变量的声明与初始化移动到外层循环内部,每次处理新的子数组时,将nw初始化为极小值-Infinity,保证任何数字都能大于初始值,不会出现比较失效的问题。

修复后代码:

function longestfour(arr) {
  let w;
  let newArr = [];
  for (let r in arr) {
    let nw = -Infinity; // 每次处理新子数组前重置最大值初始值
    w = arr[r];
    for (let rr in w) {
      if (w[rr] > nw) {
        nw = w[rr];
      }
    }
    newArr.push(nw);
  }
  return newArr;
}
console.log(longestfour([
  [-334, -6, -243, -87],
  [7, 65, 46, 3],
  [8, 55, 76, 2]
])); 
// 输出 [-6, 65, 76] 符合预期

可选简化写法,直接使用JS内置方法避免手动循环的逻辑漏洞:

function longestfour(arr) {
  return arr.map(subArr => Math.max(...subArr))
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:45:03