每次调用我的函数时,我想打印下一天的名字

时间:2017-07-01 13:45:42

标签: javascript arrays closures

我需要创建一个名为NextDay()的javascript函数。 这个函数应该在控制台中给我打印第二天的名字。

我创建了一个函数如下:

@echo off
Set "Wait=timeout /T 3 /nobreak>NUL"
:play
cls
set "id="
set /p id=Identification code: 
If "%id%"=="" Echo no input&timeout 3>NUL&goto play

IF /i "%id:~0,6%"=="color:" Echo:%id%|findstr /I "^color:[0a-f]$" >NUL 2>&1 ^
   &&(color %id:~-1%&Goto play)||(Echo wrong color&%Wait%&goto play)

cls
echo Identification stored.
%Wait%
cls
set "conf="
set /p conf=Enter identification: 

if "%conf%"=="%id%" (
  cls
  echo Access granted.
  %Wait%
  exit
) else if /i "%conf%"=="#cheat.code:(acss_grnt.admn)$" (
  color c&cls&echo Cheating system..
  %Wait%
  tree&dir
  timeout 1 >nul
  cls&echo Access granted.
  %Wait%
  exit
)
cls&echo Access denied.
%Wait%
exit

我期待输出为:

星期六 周日
星期一 星期二 星期三 星期四 星期五 星期六

但我得到的输出如下: 星期日 星期一 星期二 星期三 星期四 星期五 星期日 星期一

我相信我错过了一些非常小的东西,因为我在这里跳过了一天。 请建议

2 个答案:

答案 0 :(得分:1)

我不知道你的哪一个数学出错了,但这是一个更简单的方法:

var counter =(new Date).getDay();
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var nextDay = function () {
    var day=days[counter];
    counter = (counter+1)%7;
    return day;
};

答案 1 :(得分:1)

生成器功能可能很方便。



function* nextDay() {
  let i = 0,
      days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
  while (i < 7) {
    yield console.log(days[i++]);
    if (i == 7) i = 0;
  }
}

let gen = nextDay();
gen.next();
gen.next();
gen.next();
gen.next();
gen.next();
gen.next();
gen.next();
gen.next();
gen.next();
&#13;
&#13;
&#13;