所以我有這樣的問題:
我有 2 個陣列:
一個來自 mysql 查詢,其中包含創建訂單的日期及其總和
const ordersData = [
0: {id: 1, data: '2021-11-23T00:00:00.000Z', price: 394}
1: {id: 2, data: '2021-11-23T00:00:00.000Z', price: 315.3}
2: {id: 3, data: '2021-11-23T00:00:00.000Z', price: 16445}
...
6: {id: 7, data: '2021-11-23T00:00:00.000Z', price: 200}
7: {id: 8, data: '2021-12-22T00:00:00.000Z', price: 618}
]
第二個是陣列是我每月總和,月份,第一天和最后一天的地方
const pastMonthsData = [
0: {
month: "december",
firstDay: Wed Dec 01 2021,
lastDay: Fri Dec 31 2021,
totalMonthSum: x
},
1: {
month: "november",
firstDay: Mon Nov 01 2021,
lastDay: Tue Nov 30 2021,
totalMonthSum: x
}
]
我需要檢查訂單陣列中的日期是否在 pastMonthsData 的日期之間,并將價格添加到 totalMonthSum 中。
到目前為止,我創建了這樣的 func 但它只適用于 12 月,11 月沒有結果。
pastMonthsData.forEach((el, i) => {
el.totalMonthSum = ordersData.reduce((total, item) => {
let itemDate = new Date(item.data);
if(el.firstDay.getTime() < itemDate.getTime() && itemDate.getTime() < el.lastDay.getTime()) {
return total item.price
} else {
return 0
}
})
});
uj5u.com熱心網友回復:
兩個修復:
- 將累計總數初始化為零
- 當日期不在范圍內時回傳累計總數,而不是零
例如:
pastMonthsData.forEach((el, i) => {
el.totalMonthSum = ordersData.reduce((total, item) => {
let itemDate = new Date(item.data);
if (el.firstDay.getTime() < itemDate.getTime() && itemDate.getTime() < el.lastDay.getTime()) {
return total item.price;
} else {
return total;
}
}, 0)
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/396942.html
標籤:javascript 数组 反应 日期 减少
