【问题标题】:I want to print the name of Next Day every time I call my function每次调用函数时,我都想打印 Next Day 的名称
【发布时间】:2017-12-05 07:25:36
【问题描述】:

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

我创建了如下函数:

    //Function to Print the name of Next Day in Javascript
    var NextDay = (function () {
    counter = 0;
    var nextDay = function () {

        var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", 
                     "Friday", "Saturday"];
        var date = new Date();
        var dayNumber = date.getDay() + counter;
        if (dayNumber < 6) {
            dayNumber = dayNumber;
        }
        else {
            dayNumber = (dayNumber % 6);
        }
        var dayName = days[dayNumber];
        counter += 1;
        return dayName;
    };

    return nextDay;
})();
NextDay();
NextDay();
NextDay();
NextDay();
NextDay();
NextDay();
NextDay();
NextDay();

我期望输出为:

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

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

我相信我在这里遗漏了一些非常小的东西,因此我在这里跳过了一天。 请推荐

【问题讨论】:

    标签: javascript arrays closures


    【解决方案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;
    };
    

    【讨论】:

    • 谢谢你的帮助,我试过你的,这也是跳过一天。
    • 周六周一周二周三周四周五周日周一周二周三
    • 和我想念的一样,
    【解决方案2】:

    生成器功能可能很方便。

    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();

    【讨论】:

    • 不会产生天数[i++] 更有用吗?
    • @Jonasw 谢谢 (:
    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2017-10-20
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多