Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как решить задачу?

Hddjk Hfdhh Ученик (48), на голосовании 1 год назад
Сделайте функцию, которая принимает параметром число от 1 до 7, а возвращает день недели на русском языке.
Голосование за лучший ответ
Елена Егорова Гуру (3458) 1 год назад
function getDayOfWeek(day) {
switch(day) {
case 1:
return 'Понедельник';
case 2:
return 'Вторник';
case 3:
return 'Среда';
case 4:
return 'Четверг';
case 5:
return 'Пятница';
case 6:
return 'Суббота';
case 7:
return 'Воскресенье';
default:
return 'Недействительный день недели';
}
}
Hddjk HfdhhУченик (48) 1 год назад
Спасибо, но мне больше по душе оператор if
Елена Егорова Гуру (3458) Hddjk Hfdhh, function getDayOfWeek(num) { if (num === 1) { return 'Понедельник'; } else if (num === 2) { return 'Вторник'; } else if (num === 3) { return 'Среда'; } else if (num === 4) { return 'Четверг'; } else if (num === 5) { return 'Пятница'; } else if (num === 6) { return 'Суббота'; } else if (num === 7) { return 'Воскресенье'; } else { return 'Некорректный день недели'; } }
Doctor StrangeМыслитель (7902) 1 год назад
Почему именно так? В некоторых странах case 1: это воскресенье
Саня Семенов Оракул (60497) 1 год назад
 rusWeekday = day=>!isNaN(parseInt(day)) && (day>=1) && (day<=7)? new Date(1970, 1 - 1, day+4).toLocaleString('ru', { weekday: 'long'}): 'day not valid pass 1 of 7' 
day=>!isNaN(parseInt(day)) && (day>=1) && (day<=7)? new Date(1970, 1 - 1, day+4).toLocaleString('ru', { weekday: 'long'}): 'day not valid pass 1 of 7'
for(i=1;i<8;i++)console.log(rusWeekday (i))
/*
VM1766:1 понедельник
VM1766:1 вторник
VM1766:1 среда
VM1766:1 четверг
VM1766:1 пятница
VM1766:1 суббота
VM1766:1 воскресенье
*/
eshth strhrtj Гуру (4081) 1 год назад
Функция написанная ниже может принимать числа от 1 до бесконечности, либо можно просто написать так return dayNames[day - 1] ?? "Такой день недели несуществует!";
АндрейВысший разум (461418) 1 год назад
При day == 7 твоя функция попробует вернуть dayNames[-1].
А dayNmaes[6] (aka Воскресенье) не вернёт никогда.
eshth strhrtj Гуру (4081) Андрей, Да согласен, есть баг в коде, спасибо что заметили, уже исправил, вроде теперь работает.
Яков Гото Искусственный Интеллект (320870) 1 год назад
Вот самый оптимальный и что важнее читабельный вариант. Объект, где число - это ключ. При указании числа вне диапазона будет выведено сообщение об ошибке.
 function getDay(n) { 
const data = {
1: 'Понедельник',
2: 'Вторник',
3: 'Среда',
4: 'Четверг',
5: 'Пятница',
6: 'Суббота',
7: 'Воскресенье'
}
return data[n] ? data[n] :
'Указано неправильное значение';
}
Чуть менее читабельный вариант... но мне он нравится больше прочих.
 function getDay(n) {  
return Object.entries({
1: 'Понедельник',
2: 'Вторник',
3: 'Среда',
4: 'Четверг',
5: 'Пятница',
6: 'Суббота',
7: 'Воскресенье'
}).reduce((a,b) => {
return n == b[0] ? b[1] : a;
}, 'Указано неправильное значение');
}
Ну и нельзя обойтись без варианта для совсем уж новичка.
 function getDay(n) {  
const data = [
1, 'Понедельник',
2, 'Вторник',
3, 'Среда',
4, 'Четверг',
5, 'Пятница',
6, 'Суббота',
7, 'Воскресенье'
];
if (n === 1) {
return data[data.indexOf(n) + 1];
} else if (n === 2) {
return data[data.indexOf(n) + 1];
} else if (n === 3) {
return data[data.indexOf(n) + 1];
} else if (n === 4) {
return data[data.indexOf(n) + 1];
} else if (n === 5) {
return data[data.indexOf(n) + 1];
} else if (n === 6) {
return data[data.indexOf(n) + 1];
} else if (n === 7) {
return data[data.indexOf(n) + 1];
} else {
return 'Указано неправильное значение';
}
}
Похожие вопросы