如果选择,则返回false。日期是数组数组中的最后日期

时间:2017-10-16 07:03:49

标签: javascript arrays loops date datetimepicker

我有这个循环,它检查用户是否点击了预订数组数组中已存在的日期。我的问题是,如果点击日期是其中一个数组中的最后一个日期,则不应警告用户。我希望这是有道理的。

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.,则不会显示任何警报。

enter image description here

到目前为止,我已尝试将每个数组的最后一天保存在变量中,但我不确定如何将其应用于循环。现在,将数组中的所有日期与用户选择的startdate和enddate(slutdato)进行比较。我也不想从数组中删除Date,因为我需要它们仍然在日历中显示颜色。

临时解决方案:

if (dato == lastDay) {
    return;
}

1 个答案:

答案 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时间戳中,并将它们呈现在前面。