Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 迭代一周中的几天_Javascript - Fatal编程技术网

Javascript 迭代一周中的几天

Javascript 迭代一周中的几天,javascript,Javascript,我有一段代码,它迭代一组选定的日期,如果今天是选定日期的一部分,它应该是true。然而,isDayringsfalse无论是daysChosen还是今天发生的事件。那么我在这里错过了什么 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'])

我有一段代码,它迭代一组选定的日期,如果今天是选定日期的一部分,它应该是
true
。然而,
isDay
rings
false
无论是
daysChosen
还是今天发生的
事件。那么我在这里错过了什么

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
更新:
好的,这是一些公牛****!!!。。。考虑到
今天
在数组中,这究竟是如何计算为真的呢

for (var value of ['Sun','Mon','Tue','Wed','Thu','Fri'])
    {      
      var _day =  (today!=value) ? true : false 
      break;
    }
console.log(_day)

isDay
变为
true
时,您的循环将继续循环,并且在下一次迭代中可以将
false
分配给它。您可以使用
break
语句退出循环:

var isDay = false;
for (var daysChosen of ['Sun','Mon','Tue','Wed','Thu'])
{
    if (today == daysChosen) {
        isDay = true;
        break;
    }
}
您还可以使用函数检查数组是否包含当前的
。(
!!
是双重否定):


不幸的是,
find
并非适用于所有浏览器。

isDay
变为
true
时,您的循环将继续循环,并且在下一次迭代中可能会将
false
分配给它。您可以使用
break
语句退出循环:

var isDay = false;
for (var daysChosen of ['Sun','Mon','Tue','Wed','Thu'])
{
    if (today == daysChosen) {
        isDay = true;
        break;
    }
}
您还可以使用函数检查数组是否包含当前的
。(
!!
是双重否定):


不幸的是,
find
并非适用于所有浏览器。

如果您有一个东西数组,并且希望检查它是否有东西,我会在数组上使用新属性:

["Sun", "Mon", "Tue", "Wed", "Thu"].includes(today);
另外,不要从字符串输出中提取星期几,而是使用


如果您不想包含polyfill,可以使用以下技巧:

~
是一个二进制NOT运算符,它将数据类型中的位转换为相反的位。当没有搜索项的实例时,从
.indexOf()
返回的非-1二进制值为0。在JavaScript中有一个称为强制的概念,这意味着当出现典型的不和谐时,比如添加布尔值,就会有一种类型的值转换为另一种类型。例如,所有非零的数字都强制为
true
,而
0
强制为
false
。因此,如果将上述文本放入
if
语句中,它将充当
.includes()


更好的方法

您正在从
Date.toString()
提取一周中的某一天,这不是一个好的做法。考虑使用数组访问和<代码> Dea.Trime.GETEAL()/<代码>,使过程更加合理:

let today = new Date().getDay();
//   Sun., Mon., Tue., etc.
if ([true, true, true, true, true, false, false][today]) {
  // Day is matched

} else {
  // Day is not matched
}
这有一些好处

  • 终极可定制性。您可以指定要匹配的确切日期
  • 不依赖字符串。从字符串中提取数据的方法将在非英语用户代理中出错,因为它们的日期字符串将不同

  • 如果您有一个数组,并且希望检查它是否有内容,我将在数组上使用新属性:

    ["Sun", "Mon", "Tue", "Wed", "Thu"].includes(today);
    
    另外,不要从字符串输出中提取星期几,而是使用


    如果您不想包含polyfill,可以使用以下技巧:

    ~
    是一个二进制NOT运算符,它将数据类型中的位转换为相反的位。当没有搜索项的实例时,从
    .indexOf()
    返回的非-1二进制值为0。在JavaScript中有一个称为强制的概念,这意味着当出现典型的不和谐时,比如添加布尔值,就会有一种类型的值转换为另一种类型。例如,所有非零的数字都强制为
    true
    ,而
    0
    强制为
    false
    。因此,如果将上述文本放入
    if
    语句中,它将充当
    .includes()


    更好的方法

    您正在从
    Date.toString()
    提取一周中的某一天,这不是一个好的做法。考虑使用数组访问和<代码> Dea.Trime.GETEAL()/<代码>,使过程更加合理:

    let today = new Date().getDay();
    //   Sun., Mon., Tue., etc.
    if ([true, true, true, true, true, false, false][today]) {
      // Day is matched
    
    } else {
      // Day is not matched
    }
    
    这有一些好处

  • 终极可定制性。您可以指定要匹配的确切日期
  • 不依赖字符串。从字符串中提取数据的方法将在非英语用户代理中出错,因为它们的日期字符串将不同

  • 您有一些主要问题导致代码出现问题

  • var today=date.toString().substring(0,4)
    -天数有3个字符长,因此您可以在末尾获得额外的空间
    today==“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.
    }
    

    您有一些主要问题导致代码出现问题

  • var today=date.toString().substring(0,4)
    -天数有3个字符长,因此您可以在末尾获得额外的空间
    today==“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.
    }
    

    您将需要
    中断你在
    isDay=today==daysChosen之后的循环?真:假
    如果它是真的,否则它只对'Thu'lol'ring
    “rings
    ”创造性!我喜欢。你需要
    break你在
    isDay=today==daysChosen之后的循环?真:假
    如果它是真的,否则它只对'Thu'lol'ring
    “rings
    ”创造性!