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

我有以下猫鼬模式:


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)))

但它出错了。有什么指点吗?


慕运维8079593
浏览 75回答 1
1回答

慕莱坞森

您可以像这样在地图中进行过滤:const currentMonth = creditCards.map((x) => {&nbsp; 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) => {&nbsp; 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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript