Javascript 用数组中的日期和 0 计数填充缺失的日期

我有一个通过代码生成的数组,我正在计算从现在到 7 天前的每一天的每日发生次数。现在我的代码正在跳过没有发生的日子,但我想将这些日子与 0 计数值一起插入。这是我的代码:


var myObj;

fetch('https://blahblahblah?'+param1+param2+"FromDate"+"="+moment().subtract(7,'d').format('YYYY-MM-DD'))

.then(res=>res.json())

.then(data=>myObj= data);


var myRes= [];


myObj.forEach(function (elem) {

    var date = elem.CreatedDate.split(' ')[0];



    if (myRes[date]) {

        myRes[date] += 1;

    } else {

        myRes[date] = 1;

    }

});

现在我得到了类似的结果:


2020-12-11: 1

2020-12-12: 2

2020-12-13: 1

2020-12-15: 2

2020-12-16: 1

因为在 12-10 号我没有任何价值,在 12-14 号也没有。给定开始时间moment().subtract(7,'d').format('YYYY-MM-DD')


如何输出值为 0 的日期,如下格式所示?:


2020-12-10: 0

2020-12-11: 1

2020-12-12: 2

2020-12-13: 1

2020-12-14: 0

2020-12-15: 2

2020-12-16: 1

非常感谢


编辑:这是我的对象:


[{Id, Var1, Var2, CreationDate},

{1, 123, Var2, 2020-12-11},

{2, 1234, Var2, 2020-12-12},

{3, 12345, Var2, 2020-12-12},

{4, 1234, Var2, 2020-12-13},

{5, 321, Var2, 2020-12-15},

{6, 3214, Var2, 2020-12-15},

{7, 5432, Var2, 2020-12-16}]


梵蒂冈之花
浏览 60回答 2
2回答

慕运维8079593

计算 myRes 后,您可以创建一个包含最近 7 天日期的数组,然后与 myRes 进行比较以创建包含缺失日期的 FinalResult。let myRes = {&nbsp; &nbsp; '2020-12-11': 1,&nbsp; &nbsp; '2020-12-12': 2,&nbsp; &nbsp; '2020-12-13': 1,&nbsp; &nbsp; '2020-12-15': 2,&nbsp; &nbsp; '2020-12-16': 1,}const dates = [];const NUM_OF_DAYS = 7; // get last 7 dates.for (let i = 0; i < NUM_OF_DAYS; i++) {&nbsp; let date = moment();&nbsp; date.subtract(i, 'day');&nbsp; dates.push(date.format('YYYY-MM-DD'));}let finalResult = {};dates.reverse().forEach(date => {&nbsp; &nbsp; if(!myRes.hasOwnProperty(date)) {&nbsp; &nbsp; &nbsp; &nbsp; finalResult[date] = 0;&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; finalResult[date] = myRes[date];&nbsp; &nbsp; }});console.log(finalResult);<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

吃鸡游戏

这个改变对你有用吗?var&nbsp;myRes=&nbsp;new&nbsp;Array(7).fill(0);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript