在Javascript/Typescript中查找JSON对象中缺少的所有日期

在Javascript/Typescript中查找JSON对象中缺少的所有日期,javascript,angular,typescript,date,ionic4,Javascript,Angular,Typescript,Date,Ionic4,在我的应用程序中,我需要显示缺失的日期范围。我试图得到第一个和最后一个日期,但被击中继续进行。当我尝试时,我只得到了第一个缺少的日期,但预期的输出是显示从开始日期到结束日期的所有缺少的日期 我的起始日期是“2020-04-13”,结束日期是“2020-04-21” 预期产出: const result =["2020-04-14","2020-04-15","2020-04-16","2020-04-17","2020-04-18"] 指导我在JavaScript/Typescript中实

在我的应用程序中,我需要显示缺失的日期范围。我试图得到第一个和最后一个日期,但被击中继续进行。当我尝试时,我只得到了第一个缺少的日期,但预期的输出是显示从开始日期到结束日期的所有缺少的日期

我的起始日期是“2020-04-13”,结束日期是“2020-04-21” 预期产出:

const result =["2020-04-14","2020-04-15","2020-04-16","2020-04-17","2020-04-18"]

指导我在JavaScript/Typescript中实现预期结果。我没有在我的应用程序中包含momentJs。

Web,只需创建一个从日期到日期的llop,检查数组中是否是一个推入数组

missingDates:string[]=[]
const missingDates: string[] = [];

const from = new Date(this.data[0].custom_date);
const to = new Date(this.data[this.data.length - 1].custom_date);
for (let fecha = from;fecha < to;fecha = new Date(fecha.getTime() + 24 * 60 * 60 * 1000)) {
  const date =fecha.getFullYear() +"-" +
    ("00" + (fecha.getMonth() + 1)).slice(-2) +"-" +
    ("00" + fecha.getDate()).slice(-2);

  if (!this.data.find(x => x.custom_date == date)) missingDates.push(date);
}
console.log(missingDates)
missingdate:string[]=[]
常量丢失日期:字符串[]=[];
const from=新日期(此.data[0]。自定义日期);
const to=新日期(this.data[this.data.length-1]。自定义日期);
for(让fecha=from;fechax.custom_date==date))缺少dates.push(date);
}
console.log(丢失日期)

Web,只需创建一个从日期到日期的llop,检查数组中是否存在推入式数组

missingDates:string[]=[]
const missingDates: string[] = [];

const from = new Date(this.data[0].custom_date);
const to = new Date(this.data[this.data.length - 1].custom_date);
for (let fecha = from;fecha < to;fecha = new Date(fecha.getTime() + 24 * 60 * 60 * 1000)) {
  const date =fecha.getFullYear() +"-" +
    ("00" + (fecha.getMonth() + 1)).slice(-2) +"-" +
    ("00" + fecha.getDate()).slice(-2);

  if (!this.data.find(x => x.custom_date == date)) missingDates.push(date);
}
console.log(missingDates)
missingdate:string[]=[]
常量丢失日期:字符串[]=[];
const from=新日期(此.data[0]。自定义日期);
const to=新日期(this.data[this.data.length-1]。自定义日期);
for(让fecha=from;fechax.custom_date==date))缺少dates.push(date);
}
console.log(丢失日期)

存在更好的解决方案,但此脚本不包括预期的日期:
var dataObj=[
{“海关日期”:“2020-04-13”},
{“海关日期”:“2020-04-19”},
{“海关日期”:“2020-04-20”},
{“海关日期”:“2020-04-21”}
];
var dates=dataObj.map(d=>d.custom\u日期)
console.log(getMissingDates(dates));
函数getMissingDates(日期){
var datesParsed=dates.map(d=>newdate(d)).sort()
var allExpectedDates=[];
var missingDates=[];
var from=datesParsed[0];
var to=datesParsed[datesParsed.length-1];
无功电流=从;
while(当前){
返回日期。indexOf(el)=-1;
});
}
//从https://stackoverflow.com/questions/23593052/format-javascript-date-as-yyyy-mm-dd :
函数格式日期(日期){
var d=新日期(日期),
月份=“”+(d.getMonth()+1),
日期=“”+d.getDate(),
year=d.getFullYear();
如果(月长<2)
月份='0'+月份;
如果(日长<2)
天='0'+天;
返回[年、月、日]。加入('-');

}
存在更好的解决方案,但此脚本不包括预期的日期:
var dataObj=[
{“海关日期”:“2020-04-13”},
{“海关日期”:“2020-04-19”},
{“海关日期”:“2020-04-20”},
{“海关日期”:“2020-04-21”}
];
var dates=dataObj.map(d=>d.custom\u日期)
console.log(getMissingDates(dates));
函数getMissingDates(日期){
var datesParsed=dates.map(d=>newdate(d)).sort()
var allExpectedDates=[];
var missingDates=[];
var from=datesParsed[0];
var to=datesParsed[datesParsed.length-1];
无功电流=从;
while(当前){
返回日期。indexOf(el)=-1;
});
}
//从https://stackoverflow.com/questions/23593052/format-javascript-date-as-yyyy-mm-dd :
函数格式日期(日期){
var d=新日期(日期),
月份=“”+(d.getMonth()+1),
日期=“”+d.getDate(),
year=d.getFullYear();
如果(月长<2)
月份='0'+月份;
如果(日长<2)
天='0'+天;
返回[年、月、日]。加入('-');

}
你说的缺失是什么意思?它们是未定义的空字符串吗?我查看了您添加的链接,问题出在哪个文件中?你能更新你的原始答案,更详细地说明你遇到的确切问题、你尝试了什么以及为什么到目前为止还没有成功吗?更新了……。创建一个数组,并用“开始”和“结束”日期之间的所有日期填充它。然后,通过
splic()
删除
dataObj
中的日期。您的所有日期是否都按顺序排列?还是需要先分类?你想只填写缺失的日期吗?所有的日期都是有序的。我只想要错过的日期。你说错过是什么意思?它们是未定义的空字符串吗?我查看了您添加的链接,问题出在哪个文件中?你能更新你的原始答案,更详细地说明你遇到的确切问题、你尝试了什么以及为什么到目前为止还没有成功吗?更新了……。创建一个数组,并用“开始”和“结束”日期之间的所有日期填充它。然后,通过
splic()
删除
dataObj
中的日期。您的所有日期是否都按顺序排列?还是需要先分类?你想只填写缺失的日期吗?所有的日期都是有序的。我只想要错过的日期。