javascript - 迭代一周中的几天

标签 javascript

我有这段代码,它会迭代选定的日期集,如果今天是选定的日期集的一部分,则应该响起true。然而,无论daysChosentoday 发生什么,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)

最佳答案

您有几个主要问题导致代码出现问题。

  1. var Today=date.toString().substring(0,4) - 日期的长度为 3 个字符,因此您会在末尾获得额外的空格。 今天===“Sun”,注意多余的空格。

  2. 正如其他答案所指出的那样,一旦找到正确的值,您就不会打破循环。

<小时/>

您可以简单地使用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/

相关文章:

javascript - 有没有办法使用 jQuery 的 .html() 方法生成的按钮来隐藏 <div> ?

javascript - 如何将 jquery attr 值转换为字符串对象以将其用作正则表达式?

javascript - 创建包含给定月份中的天数的 JavaScript 对象

javascript - 这个循环只允许我为各种问题选择一个选项,尽管它们都有不同的选项

javascript - 将用户输入永久发布到网页

javascript - WebRTC 视频流无法通过 http 工作

Javascript 引用对象属性与变量

javascript - 如何检查输入的时间是否在开始时间和结束时间之间

javascript - jQuery Mobile 如何防止页面刷新时进入默认状态?

javascript - 带有模板文字的字符串中的字符串