gpt4 book ai didi

javascript - 累加器在 Javascript 的 reduce 函数中返回 NaN

转载 作者:行者123 更新时间:2023-12-03 01:41:51 24 4
gpt4 key购买 nike

我正在学习使用扩展运算符...来编写一个函数,该函数接受传递给函数的所有参数并返回偶数的总和。我的问题是,为什么除了reduce()的第一个回调之外,我的acc等于NaN?

代码和执行的打印输出如下,console.log(...)是我插入的调试代码。感谢您的帮助。

function sumEvenArgs(...args){
var sum = args.reduce( (acc, next) => {
console.log("\nnext:", next);
if (next % 2 === 0) {
acc += next;
console.log("in if - acc:", acc);
} else {
acc += 0;
console.log("in else - acc:", acc);
}
}, 0);

return sum;
}
var sum = sumEven(1,2,3,4) // 6
console.log("sum:", sum);

输出:

next: 1
in else - acc: 0

next: 2
in if - acc: NaN

next: 3
in else - acc: NaN

next: 4
in if - acc: NaN
sum: undefined

最佳答案

您应该在回调函数末尾返回acc

function sumEvenArgs(...args){
var sum = args.reduce( (acc, next) => {
console.log("\nnext:", next);
if (next % 2 === 0) {
acc += next;
console.log("in if - acc:", acc);
} else {
acc += 0;
console.log("in else - acc:", acc);
}
return acc ; // you need to add this line
}, 0);

return sum;
}
var sum = sumEvenArgs(1,2,3,4) // 6
console.log("sum:", sum);

关于javascript - 累加器在 Javascript 的 reduce 函数中返回 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50807742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com