Мне кажется я замудрённо написал решение.
Может кто-то подскажет ревью.
Сводка
var getDayOfWeek = function (firstDayInMonth, searchDay) {
var dayWeek = [“понедельник”,“вторник”,“среда”,“четверг”,“пятница”,“суббота”,“воскресенье”];
var firstDayIndex = 0;
var result = “”;
for(var i = dayWeek.length; i > 0; i–){
if(firstDayInMonth === dayWeek[i])
firstDayIndex = i - 1;
}
var indexSearchDay = (searchDay % dayWeek.length) + firstDayIndex;
var getDayOfWeek=function(day, number){
var dayWeek=[‘понедельник’, ‘вторник’, ‘среда’, ‘четверг’, ‘пятница’, ‘суббота’, ‘воскресенье’];
var indexDayFirst=dayWeek.indexOf(day);
var indexDay=number%7+indexDayFirst-1;
if (indexDay>6){
var dayNumber=dayWeek[indexDay%6];
}
else {
var dayNumber=dayWeek[indexDay];
}
return dayNumber;
}
Получилась такая вот картина. Приглашаю оценить и прокомментировать, что можно улучшить или сократить. К названиям переменных, просьба, не придираться))
var daysOfWeek = [‘понедельник’, ‘вторник’, ‘среда’, ‘четверг’, ‘пятница’, ‘суббота’, ‘воскресенье’];
var getDayOfWeek = function (firstDayOfMonth, isDayOfMonth) {
var numberOfFirstDay = daysOfWeek.indexOf(firstDayOfMonth);
var ostatok = isDayOfMonth % 7 - 1;
var omg = numberOfFirstDay + ostatok;
if ( omg <= 7) {
var answer = daysOfWeek[omg];
} else {
var gmo = omg % 7;
answer = daysOfWeek[gmo];
}
return answer;
}
function getDayOfWeek(firstDay, resDay){
var week = [‘понедельник’, ‘вторник’, ‘среда’, ‘четверг’, ‘пятница’, ‘суббота’, ‘воскресенье’];
var index = week.indexOf(firstDay);
return week[((resDay%7+index)-1)%7];
}
Пролистал ветку, решение не оригинальное (как придумал так и вышло ХД) , но хоть и не самое громоздкое, + это конечно все вкусовщина, но ИМХО более понятное чем записи в 1-2 строки, возможно через пол года/год я буду быстрее разбираться в однострочных конструкциях, но сейчас они для меня переусложнены (не, так то понятно что они делают но приходиться напрягаться…)
Творчество!
function getDayOfWeek(firstDayMonth, NumberDay) {
var daysWeek = ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'];
var NumDaysWeek = daysWeek.indexOf(firstDayMonth);
var i = NumDaysWeek+NumberDay%7-1;
if (i >= daysWeek.length) {
i -= daysWeek.length;
}
return daysWeek[i];
}
коротко и красиво, хотя возможно есть вариант еще проще)
var getDayOfWeek = function (first, now) {
var arr = [‘понедельник’,‘вторник’,‘среда’,‘четверг’,‘пятница’,‘суббота’,‘воскресенье’]
if (now<6) {
now+=7
}
var a =arr.indexOf(first)+now%7 - 1;
while(a>6) {
a-=7
}
return arr[a]
}
var getDayOfWeek = function (dayWeek, numberDayOfWeek) {
var day = ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье'];
var newWeek = [];
for (var j = 1; j <= 5; j++) {
for (var i = 0; i <= 6; i++) {
newWeek.push(day[i]);
}
}
var number = newWeek.indexOf(dayWeek) + numberDayOfWeek;
return newWeek[number - 1];
Какие-то функции, циклы, массивы!!! Ватафак гайс, код должен быть максимально простым и читабельным. Зашифруете всё в одну строку и попробуй раскодируй что в этой одной строчке напихано.
Вот максимально простой, понятный и самое главное рабочий код с обычной условной конструкцией:
var daysOfWeek = [‘понедельник’, ‘вторник’, ‘среда’, ‘четверг’, ‘пятница’ ,‘суббота’, ‘воскресенье’];
var getDayOfWeek = function (firstDay, day) {
var num = daysOfWeek.indexOf(firstDay);
if (day < 8) {
var newNum = num + day - 1;
} else {
newNum = num + day % 7 - 1;
}
if (newNum < 8) {
return daysOfWeek[newNum];
} else {
return daysOfWeek[newNum - 7];
}
}
var getDayOfWeek = function(dayOfWeek, number){
var dayOfNumber;
var days = [‘понедельник’, ‘вторник’, ‘среда’, ‘четверг’, ‘пятница’, ‘суббота’, ‘воскресенье’]
var index = number % 7 + (days.indexOf(dayOfWeek)) - 1;
console.log(index);
function getDayOfWeek(day, number) {
var days = ['понедельник','вторник','среда','четверг','пятница','суббота','воскресенье'];
return days[((number -1)%7 + days.indexOf(day))%7];
}
var getDayOfWeek = function (dayFirst, date) {
var daysOfWeek = ['понедельник', 'вторник', 'среда', 'четверг',
'пятница', 'суббота', 'воскресенье']
var period = daysOfWeek.indexOf(dayFirst) + date - 1;
return daysOfWeek[period % 7];
};