首页 > 解决方案 > 如何使用 typescript/javascript 填充对象数组中缺失的日期?

问题描述

我想从今天到接下来的 7 天填充这个对象。这是我的对象

let obj = {
  "sessions": [{
       "date": "15-05-2021"
   },
   {
       "date": "16-05-2021"
   },
   {
       "date": "18-05-2021"
   }]
}

预期输出:

let output = {
  "sessions": [{
       "date": "14-05-2021"
   },
   {
       "date": "15-05-2021"
   },
   {
       "date": "16-05-2021"
   },
   {
       "date": "17-05-2021"
   },
   {
       "date": "18-05-2021"
   },
   {
       "date": "19-05-2021"
   },
   {
       "date": "20-05-2021"
   }]
}

这是生成从今天到接下来 7 天的日期数组的代码

function getWeekDates() {
    let dates = [];
    dates.push(new Date(Date.now() + 1000 * 3600 * 1).toLocaleDateString('en-GB').replace('/', '-').replace('/', '-'));
    for (let i = 1; i <= 6; i++) {
      dates.push(new Date(Date.now() + 1000 * 3600 * (i * 24)).toLocaleDateString('en-GB').replace('/', '-').replace('/', '-'));
    }
    console.log(dates);
}

getWeekDates();

//Output:["14-05-2021", "15-05-2021", "16-05-2021", "17-05-2021", "18-05-2021", "19-05-2021", "20-05-2021"]

我是新手,所以请对我放轻松。

提前致谢...

标签: javascriptarraystypescriptdateobject

解决方案


您可以通过用新生成的日期替换 obj.sessions 来做到这一点。

let obj = {
  "sessions": [{
       "date": "15-05-2021"
   },
   {
       "date": "16-05-2021"
   },
   {
       "date": "18-05-2021"
   }]
}

function getWeekDates() {
    let dates = [];
    dates.push({ "date": new Date(Date.now() + 1000 * 3600 * 1).toLocaleDateString('en-GB').replace('/', '-').replace('/', '-')});
    for (let i = 1; i <= 6; i++) {
      dates.push({ "date": new Date(Date.now() + 1000 * 3600 * (i * 24)).toLocaleDateString('en-GB').replace('/', '-').replace('/', '-')});
    }
    obj.sessions = [...dates]
    console.log(obj)
}

getWeekDates();


推荐阅读