Javascript 包含初始值后的Array.prototype.reduce()错误
我在一个函数中使用Javascript 包含初始值后的Array.prototype.reduce()错误,javascript,arrays,reduce,Javascript,Arrays,Reduce,我在一个函数中使用reduce(),从一些文档中获取单个值。一般来说,这是可以预期的。然而,偶尔我会得到一个错误“reduce不是一个函数”。我知道,根据文档,“在没有初始值的空数组上调用reduce()是一个错误”——因此我传递“0”来处理这个问题。但我仍然有时——尽管很少——会出错。只是想了解发生了什么 我的代码如下所示: let totalOpenBalance = docs.reduce((a, curr) => a + curr.openBalance, 0); [
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
}
]
我调用的数据如下所示:
let totalOpenBalance = docs.reduce((a, curr) => a + curr.openBalance, 0);
[
{
"_id": "3s14020471287f4a9bbe9878",
"openBalance": 120,
"field3": 25
},
{
"_id": "2d75020471986f4a9bbe7231",
"openBalance": 15,
"field3": 22
}
]
错误消息“reduce不是函数”与传递给
reduce
的参数无关–它指的是文档。reduce
部分代码。当docs
的reduce
属性不是预期的函数,而是其他类型的值(如undefined
)时,会出现此错误消息
由于所有数组都有一个
reduce
函数,这意味着有时docs
变量不是数组。在该行之前添加console.log(docs)
,查看它是什么类型,并检查分配给它的位置,查看它是错误类型的原因。错误消息“reduce不是函数”与传递给reduce
的参数无关–它指的是文档。reduce
部分代码。当docs
的reduce
属性不是预期的函数,而是其他类型的值(如undefined
)时,会出现此错误消息
由于所有数组都有一个
reduce
函数,这意味着有时docs
变量不是数组。在该行之前添加console.log(docs)
,查看它是什么类型,并检查分配给它的位置,查看它是错误类型的原因。Hmm,很有趣。我必须仔细考虑在什么情况下“docs”不会是数组。即使是一个包含1个元素的数组也应该很好,对吗?@Muirik是的,一个包含1或0个元素的数组仍然有一个reduce
函数。嗯,很有趣。我必须仔细考虑在什么情况下“docs”不会是数组。即使是一个包含1个元素的数组也应该可以,对吗?@Muirik是的,一个包含1或0个元素的数组仍然具有reduce
功能。