let getDayOfWeek = function (dayStart, numberFind){
//стартовый массив
let daysArray = [‘понедельник’, ‘вторник’, ‘среда’, ‘четверг’, ‘пятница’, ‘суббота’, ‘воскресенье’];
//индекс старта в массиве daysArray
let indexDayStart = daysArray.indexOf(dayStart);
//пустой массив для новой группировки
let myArray = [];
//цикл для наполнения массива myArray элементами после текущего индекса(dayStart) включая текущий индекс(dayStart)
for (let i = indexDayStart; i <=daysArray.length-1; i++ ){
myArray.push(daysArray[i])
};
//цикл для наполнения массива myArray элементами до текущего индекса(dayStart)
if (myArray.length != 7){
for (let j = 0; j < indexDayStart;j++){
myArray.push(daysArray[j])
}
};
//теперь массив myArray готов и начинается с dayStart
//Будем сокращать numberFind до тех пор, пока не сможем этим значением двигаться по массиву myArray (>=1&&<=7)
while (numberFind > 7){
numberFind-=7;
};
//Но наш преобразованный numberFind - это порядковый номер элемента в массиве, поэтому сделаем индекс
let numberFindIndex = numberFind-1;
let week = [‘понедельник’, ‘вторник’, ‘среда’, ‘четверг’, ‘пятница’, ‘суббота’, ‘воскресенье’]
let getDayOfWeek = function(firstDay, dayOfWeek) {
let index = week.indexOf(firstDay)
let offset = dayOfWeek + index
let i = offset % 7 - 1
if (i < 0) {
i = 6
}
return week[i]
}
Нашел решение в том, что бы массив сам наполнялся сколько ему нужно от условия и после просто найти день который нам нужен их условия
function getDayOfWeeke(a , b) {
let array1 = ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье']
let start = array1.indexOf(a)
for (let i = 0; i <= b; i++) {
let swap = array1[i]
array1.push(swap)
}
let finih = array1[start + b - 1]
return finih
let getDayOfWeek = function (firstDay,number) {
let week = [‘понедельник’,‘вторник’,‘среда’,‘четверг’,‘пятница’,‘суббота’,‘воскресенье’]
for (i=0;i<7;i++) {
if (firstDay===week[i]) {number=week[(number+i-1)%7]}
}
return number
}
Я смог понять как это работает, но не смог понять как до этого можно додуматься. Фу аж комплексы появляются после такого.
имею ввиду именно уравнение для индекса нужного
var getDayOfWeek = function(firstDay, day){
var week= ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье'];
var i = 0;
var startDay = week.indexOf(firstDay);
if (day>=7){
i = startDay + (day%7) -1;
if (i>6){
i= i-7;
}
}
return week[i];
}
Я ночевал с этой задачей в голове, но с утра меня рассмешил костыль, который решает все проблемы
Намеренно не буду доводить до ума, потому что это правда очень смешно:
function getDayOfWeek(weekDay, dayDesired) {
dayDesired--; // Забавно, правда? =)
const weekNames = [
'понедельник',
'вторник',
'среда',
'четверг',
'пятница',
'суббота',
'воскресенье'
];
let numWeekDay = weekNames.indexOf(weekDay);
if (numWeekDay > 6 || numWeekDay < 0) throw new Error('week day must be from 0 to 6');
if (dayDesired > 6) {
while (dayDesired / 7 >= 1) {
dayDesired -= 7;
}
}
if (dayDesired === 0) {
return weekNames[numWeekDay];
} else if (dayDesired <= 6 && numWeekDay > 0) {
dayDesired += numWeekDay;
if (dayDesired > 6) dayDesired -= 7;
}
return weekNames[dayDesired];
}
getDayOfWeek('четверг', 2);
Я ожидал, что все и всё считают с нуля, раз уж на то пошло и не был доволен, что в тестах день всегда странным образом неправильный, но ровно на один назад