我正在其中一个函数中使用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
}
]
答案 0 :(得分:2)
错误消息“ reduce不是一个函数”与您传递给reduce
的参数无关–它指的是代码的docs.reduce
部分。当reduce
的{{1}}属性不是预期的函数,而是docs
之类的其他类型的值时,会发生此错误消息。
由于所有数组都有一个undefined
函数,这意味着有时您的reduce
变量不是数组。在该行之前添加docs
,以查看其类型,并检查其分配位置,以了解其类型错误的原因。