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

如何编写JS函数实现数组中与指定值相等的元素求和

问题分析

你的代码存在以下几个问题,导致输出不符合预期:

  • 逻辑触发时机错误:for循环中第一次匹配到目标数值时,就直接调用reduce计算整个数组的累加和并返回,没有对匹配元素做筛选统计
  • 计数逻辑缺失:没有单独统计所有匹配元素的总和,直接复用了全量数组的求和逻辑
  • 返回值逻辑不符合需求:只有当数组完全没有目标数值时才返回null,否则永远返回全数组总和
修复方案

方案1:直接用reduce实现(推荐,写法更简洁)

const array = [4, 7, 24, 7, 0, 10];
const number = 7;

function addTheSameNumbers1(number, array) {
    let hasMatch = false
    const sum = array.reduce((acc, cur) => {
        if (cur === number) {
            hasMatch = true
            return acc + cur
        }
        return acc
    }, 0)
    return hasMatch ? sum : null
}

console.log(addTheSameNumbers1(number, array)); // 输出14

该实现直接在reduce遍历过程中完成匹配判断、累加和匹配标记,处理了目标值本身为0的特殊场景,不会出现误返回null的问题。

方案2:基于原有for循环逻辑修改

const array = [4, 7, 24, 7, 0, 10];
const number = 7;

function addTheSameNumbers1(number, array) {
    let sum = 0;
    let hasMatch = false;
    const count = array.length;
    for (let i = 0; i < count; i++) {
        if (array[i] === number) {
           sum += array[i];
           hasMatch = true;
        }
    }
    return hasMatch ? sum : null;
}

console.log(addTheSameNumbers1(number, array)); // 输出14

保留你原有for循环的写法思路,新增累加变量和匹配标记,遍历所有元素完成匹配累加后再统一返回结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:45:03