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]))
// => 2Run Code Online (Sandbox Code Playgroud)
预计在这里得到-1。不确定我是否很好地掌握了 reduce() 每一步在做什么。我做错了什么,代码如何遍历数组?
如果您没有为 提供第二个参数.reduce,那么它将以第一个数组值作为累加 ( tot)的开始,这意味着不会检查数组的第一个元素是否为负。
解决方案:提供第二个参数:使其为 0。这也意味着您不再需要三元运算符:
const sumOfNegative = numbers => numbers.reduce(reducer, 0);
Run Code Online (Sandbox Code Playgroud)