@Fil1312

Как правильно перебрать два массива?

Нужно вывести дни недели соответственно дням месяца.
Сейчас выводится только воскресенье

const dayOfTheMonth = [];
const daysOfTheWeek = [
  'Понедельник',
  'Вторник',
  'Среда',
  'Четверг',
  'Пятница',
  'Суббота',
  'Воскресенье',
];

for (let i = 1; i <= 31; ++i) {
  dayOfTheMonth.push(i);
}
let day;
dayOfTheMonth.forEach((e) => {
  daysOfTheWeek.forEach((index) => {
    day = index;
  });
  console.log(`${e} января, ${day}`);
});
  • Вопрос задан
  • 119 просмотров
Решения вопроса 2
WblCHA
@WblCHA
Ума не приложу каким боком в таком виде это может понадобиться.
dayOfTheMonth.forEach((date) => {
  const day = daysOfTheWeek[(date - 1) % 7];
  console.log(`${date} января, ${day}`);
});


П.с.: ожидаем следующий вопрос "Как узнать первый день недели месяца?".
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
Не надо никаких двух массивов:

function getWeekdaysOfMonth(year, month) {
  const date = new Date(year, --month, 1);
  const result = [];

  while (date.getMonth() === month) {
    result.push(date.toLocaleString('ru-RU', {
      month: 'long',
      day: 'numeric',
      weekday: 'long',
    }));
    date.setDate(date.getDate() + 1);
  }

  return result;
}


const weekdaysOfDecember2020 = getWeekdaysOfMonth(2020, 12);

UPD. Вынесено из комментариев:

но как поступить если я не хочу забирать дни недели из стандартного объекта. а взять из их своего массива?

const weekdays = [
  'воскресенье',
  'это понедельник',
  'а это вторник',
  'конечно же среда',
  'четверг',
  'пятница - прямо после четверга',
  'суббота, рабочая неделя окончена',
];

const getWeekdaysOfMonth = (year, month) => Array.from(
  { length: new Date(year, month--, 0).getDate() },
  (n, i) => {
    const d = new Date(year, month, i + 1);
    return d.toLocaleString('ru-RU', {
      month: 'long',
      day: 'numeric',
    }) + ', ' + weekdays[d.getDay()];
  });


const weekdaysOfFebruary2021 = getWeekdaysOfMonth(2021, 2);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы