JavaScript中如何计算符合约束的整数数组元素和?代码返回undefined求助
错误点梳理
- for循环的终止条件填写错误:
for (let i = 0; ar.length; i++)的第二个参数为循环执行判断条件,只要数组非空ar.length就为真值,循环会无限执行,直到索引i超出数组范围,此时ar[i]为undefined,ar[i] <= 1000判断不成立进入else分支,执行无返回值的return语句,最终函数返回undefined。 - 数组长度校验逻辑放置位置错误:数组长度大于0的约束无需放在循环内重复执行,在函数入口处一次性校验即可。
- 异常分支逻辑不合理:只要存在不符合要求的元素就直接无值返回的逻辑,不符合常规求和场景的预期,如果只需要累加符合条件的元素,跳过不符合项即可,无需中断返回。
修复方案
方案1:严格校验约束,所有元素符合要求才返回总和,否则返回null
function simpleArraySum(ar) { // 前置校验数组长度约束 if (!ar || ar.length <= 0) return null; let acc = 0; // 修正循环终止条件 for (let i = 0; i < ar.length; i++) { if (ar[i] > 1000) { // 存在元素不符合约束,直接返回null return null; } acc += ar[i]; } return acc; }
方案2:仅累加符合条件的元素,忽略不符合项,适配不需要中断执行的场景
function simpleArraySum(ar) { if (!ar || ar.length <= 0) return 0; // 用reduce简化求和逻辑 return ar.reduce((acc, curr) => curr <= 1000 ? acc + curr : acc, 0); }
内容的提问来源于stack exchange,提问作者sumairq
相关产品推荐
相关产品推荐

