包含初始值之后的Array.prototype.reduce()错误

时间:2018-08-17 15:24:58

标签: javascript arrays reduce

我正在其中一个函数中使用reduce()从某些文档中获取单个值。通常,这按预期工作。但是,有时我会收到错误消息“ reduce不是函数”。我知道,根据文档,“在没有初始值的空数组上调用reduce()是一个错误”,因此我将传递“ 0”来处理该错误。但是我有时(尽管很少)仍然会得到错误。只是想了解发生了什么。

我的代码如下:

 let totalOpenBalance = docs.reduce((a, curr) => a + curr.openBalance, 0);

我正在调用的数据看起来像这样:

[
    {
        "_id": "3s14020471287f4a9bbe9878",
        "openBalance": 120,
        "field3": 25
    },
    {
        "_id": "2d75020471986f4a9bbe7231",
        "openBalance": 15,
        "field3": 22
    }
]

1 个答案:

答案 0 :(得分:2)

错误消息“ reduce不是一个函数”与您传递给reduce的参数无关–它指的是代码的docs.reduce部分。当reduce的{​​{1}}属性不是预期的函数,而是docs之类的其他类型的值时,会发生此错误消息。

由于所有数组都有一个undefined函数,这意味着有时您的reduce变量不是数组。在该行之前添加docs,以查看其类型,并检查其分配位置,以了解其类型错误的原因。