【问题标题】:Sorting dates by week and calculate sum using nodeJS按周排序日期并使用nodeJS计算总和
【发布时间】:2021-12-31 18:30:40
【问题描述】:

我有一组带有“Working_date”和“Working_hours”的数组值,如下所示。这些日期可以是任何日期,但很可能是连续日期。所以,我想根据这些日期计算每周的总工作时间。我正在使用 NodeJs 和 moment.Js。请帮助我使用 Nodejs 获得这个预期的输出

当前数据:

 { Working_date: '2021-12-20', Working_hours: '1' }
 { Working_date: '2021-12-21', Working_hours: '2' }
 { Working_date: '2021-12-22', Working_hours: '2' }
 { Working_date: '2021-12-25', Working_hours: '5' }
 { Working_date: '2021-12-23', Working_hours: '4' }
 { Working_date: '2021-12-24', Working_hours: '2' }

预期数据:

 {

   Working_Startdate:'2021-12-20',
   Working_Enddate :'2021-12-24',
   TotalWorking_hours:16
   
 }

【问题讨论】:

  • 你尝试过什么,它到底有什么问题?

标签: node.js momentjs


【解决方案1】:

纯 JS 解决方案 ...

const data = [
    { Working_date: "2021-12-21", Working_hours: "2" },
    { Working_date: "2021-12-20", Working_hours: "1" },
    { Working_date: "2021-12-22", Working_hours: "2" },
    { Working_date: "2021-12-25", Working_hours: "5" },
    { Working_date: "2021-12-23", Working_hours: "4" },
    { Working_date: "2021-12-24", Working_hours: "2" },
];

const result = {
    Working_Startdate: data[0].Working_date,
    Working_Enddate: data[0].Working_date,
    TotalWorking_hours: 0,
};

data.forEach((e) => {
    const date = new Date(e.Working_date);
    if (date < new Date(result.Working_Startdate)) result.Working_Startdate = e.Working_date;
    if (date > new Date(result.Working_Enddate)) result.Working_Enddate = e.Working_date;

    result.TotalWorking_hours += Number(e.Working_hours);
});

console.log(result);
/* logs the result object:
{
  Working_Startdate: '2021-12-20',
  Working_Enddate: '2021-12-25',
  TotalWorking_hours: 16
}
*/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 2018-08-15
    • 1970-01-01
    相关资源
    最近更新 更多