Создать функцию, которая возвращает объект с предыдущим. нынешним и завтрашним днем недели
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.