Почему цикл java-скриптов не выполняется после оператора if в этом коде? - PullRequest
0 голосов
/ 14 октября 2018

Я хочу напечатать год между 2014 и 2050, когда дата равна 1, день равен 0 (воскресенье) и месяц равен 0 (январь). Это код, где я делаю неправильно?

//Write a JavaScript program to find 1st January is being a Sunday between 2014 and 2050.

for (var year = 2014; year <=2050; year++){
    var today = new Date();
    var month =  today.getMonth();
    var date  =  today.getDate();
    var year1  =  today.getFullYear();
    var day   =  today.getDay();
    // console.log(year);
if (date === 1 && day === 0 && month == 0){
    console.log(year);
}    else{
    alert("error");
}; break

};

Ответы [ 3 ]

0 голосов
/ 14 октября 2018

Вы должны создать new Date(year, 0, 1) после каждой итерации, а затем проверить, является ли Воскресенье или нет.

new Date(year, 0, 1)

year будет подавать переменную 0 представляет индекс января 1 представляет 1 ст января

var date;
for (var year = 2014; year <= 2050; year++) {
  date = new Date(year, 0, 1);
  if (date.getDay() === 0) console.log(year);
};
0 голосов
/ 14 октября 2018

Я просмотрел ваш код, и вот анализ вашего кода

  1. Следующая строка кода }; break Выход из цикла после первой итерации, так что это не требуется.
  2. Ваша строка кода new Date(); Всегда возвращает текущую дату.
  3. Поэтому вместо этого вам нужно назвать ее следующим образом: new Date(year, 0, 1); Итак, это дает вам 1 января для каждого года в цикле.

Следовательно, вам просто нужно проверить, является ли это воскресенье или нет, с помощью следующего условия If:

let date = new Date(year, 0, 1);
// checks if 1st Jan for the specific year is === 0 (sunday)
if ( date.getDay() === 0 ) {

Вот окончательный рабочий код:

//Write a JavaScript program to find 1st January is being a Sunday between 2014 and 2050.
var year;
for (year = 2014; year <=2050; year++){
  let date = new Date(year, 0, 1);
// checks if 1st Jan for the specific year is === 0 (sunday)
if ( date.getDay() === 0 ) {
    console.log(year);
} else{
    // console.log("error");
};

};

Ссылки: Синтаксис: new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);

См .: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

0 голосов
/ 14 октября 2018

Это может помочь.

for (var year = 2014; year <= 2050; year++) {
  var d = new Date(year, 0, 1);
  if (d.getDay() === 0){
    console.log(year);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...