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