在 JavaScript 中使用 reduce() 对数组的负数求和

nic*_*sse 1 javascript arrays algorithm foreach iterator

我正在尝试构建一个对给定数组的负数求和的函数。我想在这里使用reduce() 函数。这似乎是一个非常简单的练习。使用三元运算符检查数字是否为负数,从而将其与总数相加。然而,结果并不像我希望的那样:

const reducer = (tot, num) => ((num < 0) ? tot + num : tot);
const sumOfNegative = numbers => numbers.reduce(reducer);

console.log(sumOfNegative([3, -1, 0]))
// => 2
Run Code Online (Sandbox Code Playgroud)

预计在这里得到-1。不确定我是否很好地掌握了 reduce() 每一步在做什么。我做错了什么,代码如何遍历数组?

tri*_*cot 5

如果您没有为 提供第二个参数.reduce,那么它将以第一个数组值作为累加 ( tot)的开始,这意味着不会检查数组的第一个元素是否为负。

解决方案:提供第二个参数:使其为 0。这也意味着您不再需要三元运算符:

const sumOfNegative = numbers => numbers.reduce(reducer, 0);
Run Code Online (Sandbox Code Playgroud)