慕運維8079593
2023-09-21 17:29:42
我有以下貓鼬模式:const SubmitDebtSchema = new Schema ({ creditCard: String, balance: [{ balanceDate: Date, newBalance: Number }],});然后我有一個 React 前端,它啟動一個空數(shù)組,并將響應設置為狀態(tài):this.state = { debts: [] }然后我想過濾這個數(shù)組,如果creditCard === true,則將它們保存在變量中: const creditCards = this.state.debts.filter((x) => { return x.creditCard === 'true' })接下來,我映射數(shù)組中的每個剩余對象,取出它們的“平衡”對象,并將它們保存在另一個變量中: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”數(shù)據(jù)等。我的問題是...我該怎么做?我一直在絞盡腦汁思考如何做到這一點,但終其一生都無法弄清楚。希望以上內(nèi)容大家都清楚了,如有疑問請留言。編輯:我現(xiàn)在有一個修復...我只需要將數(shù)字減少到總數(shù)。這是工作函數(shù):const currentMonthCreditArray = creditCards.flatMap(x => x.balance.filter(y => (new Date(y.balanceDate).getMonth() === new Date().getMonth())))我現(xiàn)在需要做的是從這個數(shù)組中取出每個“newBalance”,并將它們簡化為一個整體數(shù)字。我嘗試過這樣的事情......const currentMonthFinal = currentMonthCreditArray.flatMap(x => x.balance.map(y => y.newBalance.reduce((a,b) => a + b, 0)))但它出錯了。有什么指點嗎?
1 回答

慕萊塢森
TA貢獻1810條經(jīng)驗 獲得超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);
日期過濾器可能不完全是您想要的,但您應該明白。
我喜歡函數(shù)式編程,但是上面的代碼會做很多循環(huán)。如果這些數(shù)組很大,這可能不是一個很好的解決方案。在這種情況下,看看 Array.reduce() 或舊的 Array.push()
添加回答
舉報
0/150
提交
取消