javascript - 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
非常感谢
编辑:这是我的 obj:
[{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}]
解决方案
计算 myRes 后,您可以创建一个包含最近 7 天日期的数组,然后与 myRes 进行比较以创建包含缺失日期的 finalResult。
let myRes = {
'2020-12-11': 1,
'2020-12-12': 2,
'2020-12-13': 1,
'2020-12-15': 2,
'2020-12-16': 1,
}
const dates = [];
const NUM_OF_DAYS = 7; // get last 7 dates.
for (let i = 0; i < NUM_OF_DAYS; i++) {
let date = moment();
date.subtract(i, 'day');
dates.push(date.format('YYYY-MM-DD'));
}
let finalResult = {};
dates.reverse().forEach(date => {
if(!myRes.hasOwnProperty(date)) {
finalResult[date] = 0;
} else {
finalResult[date] = myRes[date];
}
});
console.log(finalResult);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
推荐阅读
- solr - 如何允许短语中缺少单词?
- amazon-web-services - Cannot remote (rdp) into EC2 started from aws lambda using boto3::run_instances
- javascript - JavaScript:将表达式转换为字符串
- r - 有条件的按月计算
- sql-server - 使用 Python 将 SQL 数据输出到文本文件 - 如何摆脱无?
- axon - 如何通过使用来自 kafka 主题的消息而不是通过 Rest API 创建命令
- json - 从 sql 列值更新 json 值
- c# - 对 SOAP Web 服务调用使用更多的 OOP 方法而不是 switch 语句
- javascript - 在另一个函数中调用一个函数被转移到另一个组件
- python - 由于几何形状不同,尝试溶解多边形时使用 fiona 的代码失败