我有一个被过滤的数组,这可能导致新数组为空。之后我有一个 reducer 函数,然后在一个空数组上失败:
未捕获的类型错误:减少没有初始值的空数组
如果过滤器返回一个空数组,我如何在减少之前中断?
代码
var array = [5, 6, 7, 8, 9];
var sum = array
.filter((a) => a < 5)
.reduce((a, b) => a + b)
console.log(sum);Run Code Online (Sandbox Code Playgroud)
提供初始值作为 的第二个参数reduce。在本例中,由于它是一个总和,因此适当的值可能是0:
var array = [5, 6, 7, 8, 9];
var sum = array
.filter((a) => a < 5)
.reduce((a, b) => a + b, 0)
// ----------------------^^^
console.log(sum);Run Code Online (Sandbox Code Playgroud)
如果没有初始值或至少一个条目,则reduce无法完成其工作,它没有任何可返回的内容。当它只有一个条目且没有初始值时,它返回第一个条目(不调用回调)。但连一个条目都没有……
你得到的错误应该暗示解决方案。
未捕获的类型错误:减少没有初始值的空数组
Reduce 需要第二个参数,即要减少到的初始值。
.reduce((a, b) => a + b, 0)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3523 次 |
| 最近记录: |