javascript - 如何在JS中包装有限循环并将​​其推送到有限表

标签 javascript date for-loop

我正在制作这个速记日历,显示今天和接下来的 5 天。 我已经从今天开始循环了。有一个 7 天的 JS 对象和一个 for 循环,用于检查这 7 天中的哪一天是今天;执行此检查后,循环将日期名称替换为单词“今天”。我需要完成这件事的是一种包装结果的方法,因此在到达最后一天后,函数会包装循环并显示从数组开头开始丢失的天数(如果需要)。例如,如果今天是星期三,则会显示今天、星期四、星期五、星期六、星期日,然后换行并显示星期一。 但目前我只能让我的浏览器崩溃。 代码:

var days = {
  weekDays: [{
    day: "monday",
    dayId: "1",
  }, {
    day: "tuesday",
    dayId: "2",
  }, {
    day: "wednesday",
    dayId: "3",
  }, {
    day: "thursday",
    dayId: "4",
  }, {
    day: "friday",
    dayId: "5",
  }, {
    day: "saturday",
    dayId: "6",
  }, {
    day: "sunday",
    dayId: "7",
  }, ]
}
var weekDays = days.weekDays;
var date = new Date;
var todaysDate = date.getDay();
var oneOfTheseDays = [];

for (i = 0; i < 8; i++) {
  if (weekDays[i].dayId == todaysDate) {
    weekDays[i].day = 'today';
  }
  var today = weekDays[i + todaysDate - 1];
  oneOfTheseDays.push(today);
}

console.log((oneOfTheseDays[0].day) + " " + (oneOfTheseDays[0].dayId));

我将非常感谢任何支持,因为我在这里有点生气:(

最佳答案

您可以使用取模运算符来结束索引。

例如:

for (i = 0; i < 8; i++) {
    if (weekDays[i % 7].dayId == todaysDate) { // Won't exceed 6
        weekDays[i % 7].day = 'today'; // Won't exceed 6
    }
    var today = weekDays[(i + todaysDate - 1) % 7]; // Won't exceed 6
    oneOfTheseDays.push(today);
}

关于javascript - 如何在JS中包装有限循环并将​​其推送到有限表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35570635/

相关文章:

javascript - 正则表达式/其他方法在输入时读取用户电子邮件地址并分别隐藏/显示 div

python - 计算数字总和与乘积相同的范围内的数字

javascript - 如何异步删除类函数?

javascript - Linux 和 macOS 上的 HTML 选择问题

javascript - 如何在 JQuery 中到达容器 scrollTop 时淡入元素?

没有年份的 iOS 日期格式,具有正确的本地化

java - 如何将特定日期设置到 Joda Time DateTime 对象中?

javascript - javascript 中的日期

JavaScript - 循环遍历图像目录数组并将它们应用到图像

python - 有条件地进入for循环