我有这个循环,它检查用户是否点击了预订数组数组中已存在的日期。我的问题是,如果点击日期是其中一个数组中的最后一个日期,则不应警告用户。我希望这是有道理的。
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.,则不会显示任何警报。
到目前为止,我已尝试将每个数组的最后一天保存在变量中,但我不确定如何将其应用于循环。现在,将数组中的所有日期与用户选择的startdate和enddate(slutdato)进行比较。我也不想从数组中删除Date,因为我需要它们仍然在日历中显示颜色。
临时解决方案:
if (dato == lastDay) {
return;
}
答案 0 :(得分:1)
您可以使用indexOf()JavaScript数组函数(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)更轻松地检查数组中是否存在某些内容。
做类似下面的事情:
if(array.indexOf(datetocheck)>-1) //it exists in the array
这将允许您不迭代具有更简单和更快的代码的所有内容。您还可以将indexOf的结果分配给变量,并在需要时在数组中包含日期的索引。
稍微不相干,但我还建议使用保存所有日期
new Date(dates).valueOf()
将它们存储在更容易管理的数字UTC时间戳中,并将它们呈现在前面。