Создать функцию, которая возвращает объект с предыдущим. нынешним и завтрашним днем недели

function weekDays() {
  const week = [
    "воскресенье",
    "понедельник",
    "вторник",
    "среда",
    "четверг",
    "пятница",
    "суббота",
  ];
  let date = new Date();
  let newDate = date.getDay();
  //   let newDate1 = date.setDate(date.getDate()+1); пытался вывести в отдельную переменную следующий день)
  return {
    prev: week[newDate - 1],
    curr: week[newDate],
    next: week[newDate - 6], <название следующего дня получилось только так>
    // next: week[newDate1],
  };
}

console.log(weekDays())

Не покидает ощущение, что сделал неправильно


Ответы (2 шт):

Автор решения: Armen

от 0 до 6, это дни недели

в твоем решении ты часто уходиш в минус и оно не верное

arr[-] не поддерживается но есть такой синтексис arr.at(-) с конца

const getCurrentAndNearDaysInWeek = () => {

  const week = [
    "воскресенье",
    "понедельник",
    "вторник",
    "среда",
    "четверг",
    "пятница",
    "суббота",
  ];

  const date = new Date();
  const current = date.getDay();
  //либо
  // date.setDate(date.getDate() - 1);
  // const prev = date.getDay();
  // date.setDate(date.getDate() + 2);
  // const next = date.getDay();

  //либо
  const next = current + 1 > 6 ? 0 : current + 1
  const prev = current - 1 < 0 ? 6 : current - 1

  return {
    prev: week[prev],
    current: week[current],
    next: week[next],
  };
};

console.log(getCurrentAndNearDaysInWeek())

→ Ссылка
Автор решения: Алексей Р

Здесь будет полезна операция остатка от деления. Также удобно использовать шаблон вывода и цикл, чтобы гибко настраивать диапазон дней.

function get_near_days() {
    const week = [
        "воскресенье",
        "понедельник",
        "вторник",
        "среда",
        "четверг",
        "пятница",
        "суббота"
    ];
    let out = {prev2: -2, prev: -1, curr: 0, next: 1, next2: 2}; // шаблон выходного объекта
    const today = new Date().getDay();
    for (const [key, value] of Object.entries(out)) {
        out[key] = week[(today + value + 7) % 7];
    }
    return out;
}

console.log(get_near_days());

Примечание. Отрицательный остаток от деления отрицательного числа компенсируется добавлением семерки (today + value + 7) % 7.

→ Ссылка