如何编写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
相关产品推荐
相关产品推荐

