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

不同长度数组求和问题求解:现有代码遇长度差时产生空值

数组求和:处理不同长度数组的解决方案

你的问题出在短数组的高位索引无法取到有效值,当i超过短数组的长度时,a[i]或b[i]会返回undefined,和数字相加会得到NaN,最终导致结果数组出现空值。

修改方案

核心思路是:短数组的高位补0参与计算,同时处理最后可能的进位。

修改后的代码:

function sumOfArrays(a, b) {
    const maxLength = Math.max(a.length, b.length);
    let result = new Array(maxLength); 
    let carry = 0;

    for (let i = maxLength - 1; i >= 0; i--) {
        // 索引超出数组长度时用0替代
        const elementA = i < a.length ? a[i] : 0;
        const elementB = i < b.length ? b[i] : 0;
        
        const additionResult = elementA + elementB + carry;
        result[i] = additionResult % 10;
        carry = Math.floor(additionResult / 10);
    }

    // 如果最后还有进位,添加到结果最前面
    if (carry > 0) {
        result.unshift(carry);
    }

    return result;
}

关键修改点

  • 补0处理:通过i < a.length判断索引是否在数组范围内,超出则用0代替,避免undefined参与运算。
  • 进位处理:循环结束后如果carry大于0,说明需要额外添加一位(比如[9,9] + [9]会得到[1,0,8])。
  • 返回结果:原代码没有返回值,补充return result让函数能输出计算结果。

测试示例:

console.log(sumOfArrays([1,2,3], [1,2])); // 输出 [1,3,5]
console.log(sumOfArrays([9,9], [9])); // 输出 [1,0,8]
console.log(sumOfArrays([5], [1,2,3])); // 输出 [1,2,8]

内容的提问来源于stack exchange,提问作者Micro-Scope

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:50:34