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

JavaScript循环多条件逻辑问题:求addingAllTheWeirdStuff函数修复方案

问题分析

  • 遍历array1的for循环缺少闭合大括号,导致判断array2是否存在大于20元素的逻辑被错误嵌套在array1的遍历循环内,执行逻辑完全混乱
  • 检测到array2存在大于20的元素后,给array1元素加1的逻辑里,return语句写在了遍历array1的循环内部,导致只给第一个元素加1就直接返回结果,剩余元素没有完成加1操作
  • 逻辑冗余:不需要每次检测到大于20的元素就遍历array1加1,可以先单独计算出是否存在大于20的元素的标记,最后统一处理即可,减少嵌套循环提升性能

修正后代码

function addingAllTheWeirdStuff(array1, array2){
  let sumOdd = 0;
  let sumEven = 0;
  let hasOver20 = false; // 标记array2是否存在大于20的元素
  // 一次遍历array2完成所有统计逻辑
  for (let i = 0; i < array2.length; i++) {
    const num = array2[i];
    if (num % 2 !== 0) {
      sumOdd += num;
    } else {
      sumEven += num;
    }
    if (num > 20) {
      hasOver20 = true;
    }
  }
  // 遍历array1完成所有赋值逻辑
  for (let i =0; i < array1.length; i++) {
    if (array1[i] < 10) {
      array1[i] += sumOdd;
    } else if (array1[i] > 10) {
      array1[i] += sumEven;
    }
    // 满足附加条件时额外加1
    if (hasOver20) {
      array1[i] += 1;
    }
  }
  return array1;
}

修正说明

  • 一次遍历array2同时完成奇数和、偶数和、是否存在大于20元素三个统计项,减少不必要的多次循环
  • 补充了原代码遗漏的array1遍历循环的闭合大括号,避免逻辑嵌套错误
  • 移除了所有写在循环内部的提前return语句,保证所有元素都能完成预设处理
  • 把附加规则的处理和基础规则的处理合并到同一次array1遍历中,逻辑更清晰执行效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:15:07