繁体   English   中英

如何计算 node.js 中的值

[英]How to calculate values in node.js

我正在开发类似 Food Panda 的应用程序。 我正面临一个问题。 我正在计算司机的支出(例如,如果司机每个订单赚取 4.3 美元)我试图获得每个月的总和,但是当司机停止服务时,我的代码为这些月份分配了相同的价值。

请告诉我我的代码做错了什么:

parameters: toDate=2020-10-21&fromDate=2021-11-21

const resturantOrders = await DelivigoOrder.findAll({
  attributes: [
    "Id",
    "OrderNumber",
    "OrderStatusId",
    "TotalPrice",
    "OrderAcceptTime",
    "DriverId",
    "ResturentId"
  ],
  where: {
    DriverId: driverId,
    IsActive: true,
    // OrderAcceptTime: { [Op.between]: [fromDate, toDate] },
    $or: [
      { OrderStatusId: 50 },
      { OrderStatusId: 55 },
      { OrderStatusId: 60 },
      { OrderStatusId: 70 },
      { OrderStatusId: 80 },
    ],
  },
});

var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct ", "Nov ", "Dec"];

var orderPayouts = [];
let payout = 0;
for (let index = 0; index < months.length; index++) {
  const element = months[index];

  for (let index = 0; index < resturantOrders.length; index++) {
    const order = resturantOrders[index];

    if (element === InternalServices.getMonthName(order.OrderAcceptTime)) {
      console.log(element, index, "in");
      payout = payout + 4.3;
    }
  }

  orderPayouts.push({
    month: element,
    payout: payout
  });
};

输出

{
  "result": [{
    "month": "Jan",
    "payout": 55.899999999999984
  }, {
    "month": "Feb",
    "payout": 55.899999999999984
  }, {
    "month": "Mar",
    "payout": 55.899999999999984
  }, {
    "month": "Apr",
    "payout": 55.899999999999984
  }, {
    "month": "May",
    "payout": 55.899999999999984
  }, {
    "month": "Jun",
    "payout": 55.899999999999984
  }, {
    "month": "Jul",
    "payout": 55.899999999999984
  }, {
    "month": "Aug",
    "payout": 55.899999999999984
  }, {
    "month": "Sep",
    "payout": 55.899999999999984
  }, {
    "month": "Oct",
    "payout": 150.5
  }, {
    "month": "Nov",
    "payout": 150.5
  }, {
    "month": "Dec",
    "payout": 150.5
  }]
}

驱动程序仅在 1 月和 10 月的两个月内工作,但我的代码将 Jan 值分配给与 OCT 相同的所有其他月份。

您在循环之外声明ley payout 您应该考虑在循环内声明它

...
for (let index = 0; index < months.length; index++) {
  let payout = 0;
  const element = months[index];
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM