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

求助:实现addingAllTheWeirdStuff函数出错,请求排查修正代码

问题排查与代码修正:addingAllTheWeirdStuff函数

原代码存在的问题

  • 核心逻辑偏差:
    1. 问题要求将array2奇数和加到array1所有小于10的元素(无关奇偶),但原代码仅处理了小于10的奇数;
    2. 问题要求将array2偶数和加到array1所有大于10的元素(无关奇偶),但原代码仅处理了大于10的偶数;
  • 遗漏需求实现:完全未处理“若array2存在大于20的元素,给array1每个元素加1”的规则;
  • 元素遗漏风险:通过两个独立循环处理元素,会漏掉既不满足“小于10且奇数”也不满足“大于10且偶数”的元素(如等于10的元素、大于10的奇数等);
  • 代码冗余:reduce中的三元表达式返回null属于无效操作,可简化。

修正后的代码

function addingAllTheWeirdStuff(array1, array2) {
  // 计算array2中奇数的总和
  const totalOdds = array2.reduce((acc, curr) => curr % 2 !== 0 ? acc + curr : acc, 0);
  // 计算array2中偶数的总和
  const totalEvens = array2.reduce((acc, curr) => curr % 2 === 0 ? acc + curr : acc, 0);
  // 判断array2是否存在大于20的元素
  const hasOver20 = array2.some(num => num > 20);

  // 遍历处理array1的每个元素
  return array1.map(num => {
    let result = num;
    // 小于10的元素加奇数和
    if (num < 10) {
      result += totalOdds;
    }
    // 大于10的元素加偶数和
    if (num > 10) {
      result += totalEvens;
    }
    // 存在大于20的元素则额外加1
    if (hasOver20) {
      result += 1;
    }
    return result;
  });
}

// 测试用例验证
console.log(addingAllTheWeirdStuff([1, 3, 5, 17, 15], [1, 2, 3, 4, 5]));
// 输出: [10, 12, 14, 23, 21] 符合预期
console.log(addingAllTheWeirdStuff([1, 3, 5, 17, 15, 1], [1, 2, 3, 4, 5, 22]));
// 输出: [11, 13, 15, 46, 44, 11] 符合预期

修正说明

  1. 逻辑对齐需求:使用map遍历array1所有元素,根据元素大小(<10或>10)添加对应总和,不再限制元素奇偶性;
  2. 补全遗漏规则:用array2.some()快速判断是否存在大于20的元素,满足条件则给每个结果加1;
  3. 简化代码结构:去掉冗余的循环和无效返回,用map确保每个元素都被处理;
  4. 提升可读性:变量命名更规范,逻辑步骤清晰拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:06:31