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

JavaScript实现adjacent_sum函数遇问题:逻辑与需求不符

问题分析与修复:adjacent_sum 方法实现错误

问题根源

  1. 核心逻辑错误:你原本的思路是每次取数组前两个元素相加后移除它们,这直接导致相邻元素的配对逻辑完全偏离需求。比如处理 [3,7,2,11] 时,第一次取 3+7 后移除前两个元素,剩下 [2,11] 再加 2+11,最终得到 [10,13],漏掉了 7+2 这个关键的相邻和。正确的逻辑应该是遍历数组,让每个元素和它紧邻的下一个元素相加,而非跳步移除元素。
  2. 语法错误:函数内 console.log(newArr) 写在 return newArr; 之后,这行代码永远不会执行;同时函数末尾缺少闭合的 },导致代码无法正常运行。

正确实现方式

方式1:for循环遍历(直观易懂)

function adjacent_sum(arr) {
    const newArr = [];
    // 遍历到倒数第二个元素即可,每个元素和下一个元素相加
    for (let i = 0; i < arr.length - 1; i++) {
        newArr.push(arr[i] + arr[i + 1]);
    }
    return newArr;
}

console.log(adjacent_sum([3, 7, 2, 11])); // [10, 9, 13]
console.log(adjacent_sum([2, 5, 1, 9, 2, 4])); // [7, 6, 10, 11, 6]

方式2:使用Array.map(简洁写法)

function adjacent_sum(arr) {
    // 截取前arr.length-1个元素,每个元素和下一个位置的元素相加
    return arr.slice(0, -1).map((num, index) => num + arr[index + 1]);
}

console.log(adjacent_sum([3, 7, 2, 11])); // [10, 9, 13]
console.log(adjacent_sum([2, 5, 1, 9, 2, 4])); // [7, 6, 10, 11, 6]

逻辑说明

两种实现都是依次取数组中索引为 i 和 i+1 的元素相加,覆盖了所有相邻元素的配对(从第0个与第1个,直到倒数第二个与最后一个),最终得到的新数组长度正好是原数组长度减1,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:15:00