Javascript 减少从数组中提取对象时返回NaN的函数-MongoDB数据库,反应前端
我有以下模式:Javascript 减少从数组中提取对象时返回NaN的函数-MongoDB数据库,反应前端,javascript,reactjs,mongodb,Javascript,Reactjs,Mongodb,我有以下模式: const SubmitDebtSchema = new Schema ({ balance: [{ balanceDate: Date, newBalance: Number }], }); 我试图循环遍历我的数据库条目,从balance数组中的每个对象中提取“newBalance”,然后将它们减少/相加 然而,它正在返回“南”-我不明白为什么 以下是我的Axios调用以获取数据: componentDidMount() { axios.
const SubmitDebtSchema = new Schema ({
balance: [{
balanceDate: Date,
newBalance: Number
}],
});
我试图循环遍历我的数据库条目,从balance数组中的每个对象中提取“newBalance”,然后将它们减少/相加
然而,它正在返回“南”-我不明白为什么
以下是我的Axios调用以获取数据:
componentDidMount() {
axios.get("/api/fetch/fetchDebtCards")
.then((response) => {
this.setState({
debts: response.data
})
console.log(this.state.debts.balance.newBalance)
})
}
那里的控制台日志成功检索数据库条目
这是我的reduce函数:
const sumBalance = this.state.debts.reduce(function(previousValue, currentValue) {
return (
previousValue + currentValue.balance.newBalance
)
}, 0)
您可以看到,我正在尝试点击“balance.newBalance”以访问每个balance对象中的newBalance
有人能指出我做错了什么吗
编辑:我的控制台日志,包含两个条目。我要做的是从这些数组中得到newBalance array.length-1,并通过减少它们的值将它们相加
[Log]数组
0对象
余额:[{u id:“5fbbddd1077c56000828973c”,余额日期:
“2020-11-23T16:05:36.124Z”,新天平:400}]
1对象
余额:[{u id:“5FBC06F58B2F9800865DF54”,余额日期:
“2020-11-23T19:01:07.789Z”,新天平:300}](1)
如果“console.log(this.state.deborts.balance.newBalance)”有效,那么债务不是数组,那么您如何使用债务映射?Map只能用于数组
我不确定你的对象/数组到底是什么。也许记录下来会有帮助
如果它是一个数组,那么这可能会起作用
const sumBalance = this.state.debts.map(x => x.balance).flat().reduce((a,b) => a + b.newBalance, 0)
如果它是一个对象,那么这可能会起作用
const sumBalance = this.state.debts.balance.reduce((a,b) => a+b.newBalance, 0)
如果这些都不起作用,只需记录“this.state.deborts”,让我们看看你有什么
编辑:好的,那么您只需要余额数组的最后一个值(最新余额),类似这样的吗
const sumBalance = this.state.debts.map(x => x.balance[x.balance.length-1].newBalance).reduce((a,b) => a + b, 0)
如果
currentValue.balance.newBalance
中有任何NaN,则您将得到NaN作为减少的结果。也许可以尝试在retrun语句中返回一个常量“1”,将其作为潜在的原因,在每个条目中都必须有。这是因为它没有提取条目。this.state.debtes
应该是一个数组,这样您就可以使用reduce了。但是在你的console.log之后,它不是arrayHey,我将用我的console日志更新我的原始帖子。。。第一个不起作用-关键的一点是,我没有试图减少“newBalance”数组,但是所有的平衡,特别是其中的newBalance,如果这有意义的话?我现在已经添加了它。根据你的结构,第一个答案应该起作用,它会给你什么输出?好的,我想我已经解决了。。。这是我的错。所以“平衡”是一个对象数组。您的第一个函数返回3000-这是progress,但我实际想要的是从balance数组中提取最后一个数字,并对我的所有数据库条目执行该操作;然后把它们加起来。我从每个日志中取出值数组;因为他们每个人都有7/8。所以我想它会像x.balance[balance.length-1]一样,在编辑之后工作。非常感谢你的帮助!