我有这段代码,它会迭代选定的日期集,如果今天是选定的日期集的一部分,则应该响起true
。然而,无论daysChosen
或today
发生什么,isDay
都会响起false
。那么我在这里缺少什么?..
var date = new Date;
var isDay;
var today=date.toString().substring(0,4)
//console.log(today)//good
for (var daysChosen of ['Sun','Mon','Tue','Wed','Thu'])
{
console.log(daysChosen)//good
isDay = today==daysChosen ? true : false
}
console.log(isDay)//bad, should be true if today is part of daysChosen
更新:
好吧,这有点牛逼!!!...鉴于 today
在数组中,这到底如何才能计算为 true!?...
for (var value of ['Sun','Mon','Tue','Wed','Thu','Fri'])
{
var _day = (today!=value) ? true : false
break;
}
console.log(_day)
最佳答案
您有几个主要问题导致代码出现问题。
var Today=date.toString().substring(0,4)
- 日期的长度为 3 个字符,因此您会在末尾获得额外的空格。今天===“Sun”
,注意多余的空格。正如其他答案所指出的那样,一旦找到正确的值,您就不会打破循环。
您可以简单地使用indexOf
方法。它返回给定字符串的索引,如果数组中不包含该字符串,则返回 -1。
var date = new Date();
// first 3 characters from string for day of week
var today = date.toString().substring(0,3);
var days = ['Sun','Mon','Tue','Wed','Thu'];
var isInDays = days.indexOf(today) > 0; // indexOf returns -1 if not contained
或者修复现有代码:
var date = new Date;
var isDay;
var today=date.toString().substring(0,3)
//console.log(today)//good
for (var daysChosen of ['Sun','Mon','Tue','Wed','Thu'])
{
console.log(daysChosen)//good
isDay = today==daysChosen ? true : false
if(isDay) break; // must break once you find it or you will keep overriding the value.
}
关于javascript - 迭代一周中的几天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38947016/