我有一个循环,它检查用户是否单击了预订数组数组中已存在的日期。我的问题是,如果单击的日期是这些数组之一中的最后一个日期,它不应该警告用户。我希望这是有道理的。
arrayAfBookninger.forEach(function(array) {
var lastDay = array[array.length - 1];
array.forEach(function(dato) {
if (startdato == moment(dato).format("YYYY-MM-DD") || slutdato == moment(dato).format("YYYY-MM-DD")) {
alertify.alert("Datoen er allerede booket. Vælg venligst en anden dato.");
$("#startdato").val("");
$("#slutdato").val("");
}
datoerMellemStartSlut.forEach(function(val) {
if (moment(val).format("YYYY-MM-DD") === moment(dato).format("YYYY-MM-DD")) {
alertify.alert("Der er bookede datoer mellem den valgte start- og slutdato. Vælg venligst en anden dato.");
$("#startdato").val("");
$("#slutdato").val("");
}
});
});
});
如果用户点击此处的 17.,则不应显示任何警报。
到目前为止,我已经尝试将每个数组的最后一天保存在变量中,但我不确定如何将其应用于循环。现在,数组中的所有日期都将与用户选择的开始日期和结束日期 (slutdato) 进行比较。我也不想从数组中删除日期,因为我需要它们仍然以日历中的颜色显示。
临时解决方案:
if (dato == lastDay) {
return;
}
最佳答案
您可以使用indexOf() JavaScript 数组函数( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf ) 更轻松地检查数组中是否存在某些内容。
做类似下面的事情:
if(array.indexOf(datetocheck)>-1)//它存在于数组中
这将使您不必迭代所有内容,从而拥有更简单和更快的代码。如果需要,您还可以将 indexOf 的结果分配给变量,并在数组中包含日期的索引。
有点无关紧要,但我还建议使用保存所有日期
new Date(dates).valueOf()
它将把它们存储在数字 UTC 时间戳中,这样更容易管理,并且只渲染它们的前面。
关于javascript - 如果所选日期是数组数组中的最后一个日期,则返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46764626/