簡體   English   中英

Javascript:在數組末尾重新啟動一次循環

[英]Javascript: Restart loop once at the end of an array

我最近遇到了這個問題,在任何地方都找不到很好的答案(因此,這個問題)。

我想在結束時重新啟動循環,但只循環有限的次數。

在這種特殊情況下,我在一周中有幾天的數組,我想使用Date.getDay()顯示從今天的星期幾開始的未來7天中的日子的名稱,它返回一個從0(星期日)開始的值到6(星期六)。 我可以創建接下來7天名稱的數組,但由於當前循環而我一直跳過一個名稱。 這是我到目前為止所得到的。

我的預期輸出是:

['friday', 'saturday', 'sunday', 'monday', 'tuesday', 'wednesday', 'thursday']

const dayNames = [
  "Monday",
  "Tuesday",
  "Wednesday",
  "Thursday",
  "Friday",
  "Saturday",
  "Sunday"
];
const rawDate = new Date();
let dayNum = rawDate.getDay();
const week = [];
for (let i = 0; i < 6; i++) {
  if (dayNum + 1 === 7) {
    dayNum = 0;
    for (j = 0; j < todayNum; j++) {
      week.push(dayNames[dayNum])
      dayNum++
    }
    week.push(dayNames[dayNum]);
    dayNum++
  } else {
    week.push(dayNames[dayNum + 1]);
    dayNum++;
  }

}
console.log(week);

我確實看到我的“ for”中的“ if”是一個人跳過的原因,但是我似乎無法解決該問題。 謝謝你們

您可以將余數運算符%用於正確的索引。

 const dayNames = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]; const rawDate = new Date(); let dayNum = rawDate.getDay(); const week = []; for (let i = 0; i < 6; i++) { week.push(dayNames[(dayNum + i) % dayNames.length]); } console.log(week); 

您不需要重新啟動循環,只需使用模數運算符即可包裝數組索引。

並且您需要固定dayNames的順序,使其與getDay()返回的內容相對應。 整個循環需要運行7次,而不僅僅是6次。

 const dayNames = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; const rawDate = new Date(); const dayNum = rawDate.getDay(); const week = []; for (let i = dayNum; i < dayNum + 7; i++) { week.push(dayNames[i % 7]); } console.log(week); 

嘗試使用%運算符,僅執行一個循環:

 const dayNames = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; const rawDate = new Date(); let dayNum = rawDate.getDay(); const week = []; for (let i = 0; i < 7; i++) { week.push(dayNames[dayNum++ % 7]); } console.log(week); 

另外,根據Date.prototype.getDate ,一周的第零天是星期日。

如果要[明天明天+ 1,...,明天+ 6]:

for (let i = 1; i <= 7; i++) {
  week.push(dayNames[(dayNum + i) % 7]);
}

您需要i < 7才能獲得接下來7天的全部信息,然后使用模數運算符%返回除法的余數,並且一個for循環將為您提供所需的結果。

 const dayNames = [
  "Monday",
  "Tuesday",
  "Wednesday",
  "Thursday",
  "Friday",
  "Saturday",
  "Sunday"
];
const rawDate = new Date();
let dayNum = rawDate.getDay();
const week = [];
for (let i = 0; i < 7; i++) {
    week.push(dayNames[(dayNum + i) % dayNames.length]);
}
console.log(week);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM