【问题标题】:loop within a loop in javascript在javascript中的循环内循环
【发布时间】:2016-10-16 11:21:59
【问题描述】:

我正在尝试在循环中运行一个循环以获取一些有效日期,但似乎无法正常工作。我的样本数据是这样的

这些是有效日期 [ 'Monday', 'Thursday', 'Friday', 'Sunday' ]

这些都是有效日期

[ Sun Oct 09 2016 05:00:00 GMT+0500 (Pakistan Standard Time),
  Mon Oct 10 2016 05:00:00 GMT+0500 (Pakistan Standard Time),
  Tue Oct 11 2016 05:00:00 GMT+0500 (Pakistan Standard Time),
  Wed Oct 12 2016 05:00:00 GMT+0500 (Pakistan Standard Time),
  Thu Oct 13 2016 05:00:00 GMT+0500 (Pakistan Standard Time),
  Fri Oct 14 2016 05:00:00 GMT+0500 (Pakistan Standard Time),
  Sat Oct 15 2016 05:00:00 GMT+0500 (Pakistan Standard Time),
  Sun Oct 16 2016 05:00:00 GMT+0500 (Pakistan Standard Time) ]

我想做的是:只找到那些等于空闲天数的日期

正在做的是:

_valid_dates = (dates, days) ->
  validDates = dates
  dates.forEach (date) ->
    days.forEach (day) ->
      if moment_strf(date).strftime("%A") != day
        validDates.remove date
      else
        console.log "Am valid day", moment_strf(date).strftime("%A")

  validDates

但结果并没有像我预期的那样出现。根据数据,剩余日期应该是

[ Sun Oct 09 2016 05:00:00 GMT+0500 (Pakistan Standard Time),
  Mon Oct 10 2016 05:00:00 GMT+0500 (Pakistan Standard Time),
  Thu Oct 13 2016 05:00:00 GMT+0500 (Pakistan Standard Time),
  Fri Oct 14 2016 05:00:00 GMT+0500 (Pakistan Standard Time),
  Sun Oct 16 2016 05:00:00 GMT+0500 (Pakistan Standard Time) ]

任何帮助将不胜感激!谢谢

【问题讨论】:

  • 什么是moment_strfvalidDates.remove
  • 您的结果集中有多少条记录?它总是一样还是不一样?您的结果是如何填充的?
  • validDates = dates 是一个浅拷贝(即只复制引用,而不是它指向的内容),因此您可能陷入了旧的“在迭代数组时从数组中删除”陷阱。你最好单独列出你想要的东西,不理会参数。
  • Moment strf 是从 momentjs 中采用的。而 .romove 是一种用值移除数组的方法
  • 我问是因为我在任何地方都找不到这两个函数的任何文档。无论如何,如果@muistooshort 的建议不起作用,您可能应该深入研究这些功能。

标签: javascript coffeescript


【解决方案1】:

您只需使用 javascript 即可:

您可以使用 0-6 表示天数,而不是在天数组中使用全名

    //sunday=0,monday=1 ....saturday=6
     var days=[1,4,5,0];
     var result_arr=[]; // required array for result
     for(date in dates)
     {
        if(days.indexOf(new Date(date).getDay())!=-1)
         {
             result_arr.push(date);
         }
      }

【讨论】:

  • @JunaidFarooq,我认为你想通过上面的代码得到的是有效日期(在 days 数组 ['Monday'、'Thursday'、'Friday'、'Sunday'] 中有可用的日期) ,所以如果我理解正确,我的代码将正常工作,如果您的问题不同,请清除它。谢谢你
猜你喜欢
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2012-12-22
  • 2014-06-18
相关资源
最近更新 更多