【问题标题】:Javascript indexOf in date array always resulting -1日期数组中的Javascript indexOf总是产生-1
【发布时间】:2018-07-24 08:46:55
【问题描述】:

我在检查日期是否在我的数组中时遇到问题。

我参考这篇文章How to correctly use JavaScript indexOf in a date array

但是当我在我的项目中使用它时,它总是导致 -1。

这是我的代码

for (var current = dateStart; current <= dateEnd; current.setDate(current.getDate() + 1)) {
    console.log(this.leaveState.currentHoliday.map(Number).indexOf(+current));
}

我需要检查current日期是否在currentHoliday数组中。

【问题讨论】:

  • 请添加您的输入数组
  • 看起来像是一种检查假期的低效方法,在每次迭代时转换整个假期数组。为什么不遍历一次假期数组并查看开始日期和结束日期之间是否有任何值?如果假期已排序,您可以在假期结束后立即停止查找。
  • @RobG 所以我需要 2 个循环?嵌套?这比我的方式更有效率吗?
  • 格式可能有问题
  • 你能用你的相关 HTML、JavaScript、日期选择器和其他东西制作一个有效的 sn-p 吗?

标签: javascript arrays datetime vue.js


【解决方案1】:

我认为映射不需要循环到您的数组中。 而 -1 在某种程度上意味着您的数组中不存在日期。

可能是因为在每个循环中,您在看到实际日期之前都会添加一天。

我觉得你可以试试:

    var alldays = [...];
    //you should eliminate these two codes
//    datestart = something;
//  dateend = something;
    var holiday;
    for(var i in alldays){
           console.log(alldays.map(Number).indexOf(this.leaveState.currentHoliday));
    }

【讨论】:

  • 因为我使用 datepicker 来选择 startdate 和 enddate,我认为我需要更多的工作将开始日期和结束日期之间的所有日期放入一个数组..
  • 嗨。还请查看这篇涉及 Javascript 循环的帖子 stackoverflow.com/a/3010848/1219213
猜你喜欢
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
相关资源
最近更新 更多