【问题标题】:Get sum of array values based on date values of other array根据其他数组的日期值获取数组值的总和
【发布时间】:2022-01-27 06:59:04
【问题描述】:

所以我有这样的问题:

我有 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
 }
]

我需要检查订单数组中的日期是否介于过去月份数据的日期之间,并将价格添加到 totalMonthSum。
到目前为止,我创建了这样的函数,但它只适用于 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
          }
        })
      });

【问题讨论】:

  • 真正初始化pastMonthsData的代码在哪里?
  • @jarmod 这是一个根据前几个月创建对象数组的函数,我认为这在这里并不重要
  • 我问的原因是为了让我们更容易运行您的代码并帮助您。就目前而言,每个想要帮助的人都可能必须修改您的代码以更正变量初始化。如果可能,您应该始终发布可以运行的独立代码。这对我们更好,因此对您也更好。

标签: javascript arrays reactjs date reduce


【解决方案1】:

两个修复:

  1. 将累计总数初始化为零
  2. 当日期不在范围内时,返回累计总数,而不是零

例如:

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

【讨论】:

  • 对不起,我忘了添加有问题的初始化,返回总数而不是零对我有帮助,现在一切正常。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多