为了账号安全,请及时绑定邮箱和手机立即绑定

循环遍历对象数组,根据日期是否在当月进行过滤

循环遍历对象数组,根据日期是否在当月进行过滤

慕运维8079593 2023-09-21 17:29:42
我有以下猫鼬模式:const SubmitDebtSchema = new Schema ({  creditCard: String,  balance: [{    balanceDate: Date,    newBalance: Number  }],});然后我有一个 React 前端,它启动一个空数组,并将响应设置为状态:this.state = {      debts: []    }然后我想过滤这个数组,如果creditCard === true,则将它们保存在变量中:  const creditCards = this.state.debts.filter((x) => { return x.creditCard === 'true' })接下来,我映射数组中的每个剩余对象,取出它们的“平衡”对象,并将它们保存在另一个变量中:const databaseBalance = creditCards.map(x => x.balance)如果我控制台日志databaseBalance,则输出如下:[[{_id:“5fc4aa02959b1409f2edab69”,newBalance:300,balanceDate:“2020-11-30T08:14:58.035Z”},{_id:“5fc51cb0bd4d9a0f6059bdbe”,newBalance:400,balanceDate:“2020-1 1-30T16:24 :14.390Z"}]]然后我想做的是查看每个 BalanceDate 条目,将它们与某个月份进行比较(当前月份,然后当前月份 - 1,当前月份 - 2 等等),然后将它们存储在以下变量中:const currentMonthValues = []const currentMonthValuesMinusOne = []const currentMonthValuesMinusTwo = []作为参考,balanceDate 条目存储为日期对象,如下所示:2020-11-30T08:14:58.035Z存储到空的 currentMonthValue 中的条目必须是完整的对象 - 并且仍然包含“newBalance”数据等。我的问题是...我该怎么做?我一直在绞尽脑汁思考如何做到这一点,但终其一生都无法弄清楚。希望以上内容大家都清楚了,如有疑问请留言。编辑:我现在有一个修复...我只需要将数字减少到总数。这是工作函数:const currentMonthCreditArray = creditCards.flatMap(x => x.balance.filter(y => (new Date(y.balanceDate).getMonth() === new Date().getMonth())))我现在需要做的是从这个数组中取出每个“newBalance”,并将它们简化为一个整体数字。我尝试过这样的事情......const currentMonthFinal = currentMonthCreditArray.flatMap(x => x.balance.map(y => y.newBalance.reduce((a,b) => a + b, 0)))但它出错了。有什么指点吗?
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

您可以像这样在地图中进行过滤:


const currentMonth = creditCards.map((x) => {

  return { ...x, balance: x.balance.filter((y) => new Date().getMonth() - new Date(y.balanceDate).getMonth() <= 1) };

}).filter(i => i.balance.length);



const lessOneMonth = creditCards.map((x) => {

  return { ...x, balance: x.balance.filter((y) => new Date().getMonth() - new Date(y.balanceDate).getMonth() <= 2) };

}).filter(i => i.balance.length);



日期过滤器可能不完全是您想要的,但您应该明白。


我喜欢函数式编程,但是上面的代码会做很多循环。如果这些数组很大,这可能不是一个很好的解决方案。在这种情况下,看看 Array.reduce() 或旧的 Array.push()


查看完整回答
反对 回复 2023-09-21
  • 1 回答
  • 0 关注
  • 54 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信