Какой сегодня день?

var getDayOfWeek = function(day, number) {
var week = [‘понедельник’, ‘вторник’, ‘среда’, ‘четверг’, ‘пятница’, ‘суббота’, ‘воскресенье’];
var month = [];
var start = 0;
var dayNumber = 0;
for(var i = 0; i<7; i++)
{
if(week[i]=== day)
{
start = i;
}
}

for(var j = start; j<7; j++)
  {
    month.push(week[j]);
    dayNumber++;
    if(dayNumber === number)
    {
      return week[j];
    }
  }
  
for(var i = 0; i<4; i++)
{
  for(var j = 0; j<7; j++)
  {
    month.push(week[j]);
    dayNumber++;
    if(dayNumber === number)
    {
      return week[j];
    }
  }
}
console.log(month);

}

Кусок кода от дедушки кекса:

let getDayOfWeek = function (firstDay,selectDay) {
    let daysName = ["понедельник",
                    "вторник",  
                    "среда",  
                    "четверг",
                    "пятница",
                    "суббота",
                    "воскресенье"]
    let firstDayIndex = daysName.indexOf(firstDay) - 1
    let lastDayIndex = (firstDayIndex + selectDay) % 7
    let result = daysName[lastDayIndex]
    return result
}

let getDayOfWeek = function (dayWeek, num) {
let days = [‘воскресенье’, ‘понедельник’, ‘вторник’, ‘среда’, ‘четверг’, ‘пятница’, ‘суббота’];
let day = 0;
for (i = 0; i < days.length; i++) {
day = days[i];
if (day === dayWeek) {
return days[(i + num) % 7 - 1];
}
}
};

1 лайк

работает не для всех дней

А вот за такой вариант решения, например на работе, ничего плохого не скажут? Не сделают? ))

let mass = ['понедельник', 'вторник','среда','четверг','пятница','суббота','воскресенье']
let monday = [1,8,15,22,29,36]
let Tuesday  = [2,9,16,23,30,37]
let Wednesday  = [3,10,17,24,31]
let Thursday = [4,11,18,25,32]
let Friday = [5,12,19,26,33]
let Saturday = [6,13,20,27,34]
let Sunday = [7,14,21,28,35]
let massbig = [monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday]

let getDayOfWeek = function(dayWeek,nomer){
     
      let who = mass.indexOf(dayWeek)+1
      let summ = 0
      if (nomer==1 & who==1){
     return 'понедельник'}
      else { summ = nomer + who - 1}
      
      let poisk = monday.indexOf(summ)
      if (poisk > 0) {let trash = massbig.indexOf(monday)
      return (mass[trash])}
      
      poisk = Tuesday.indexOf(summ)
      if (poisk > 0) {trash = massbig.indexOf(Tuesday)
      return (mass[trash])}
      
      poisk = Wednesday.indexOf(summ)
      if (poisk > 0) {trash = massbig.indexOf(Wednesday)
      return (mass[trash])}
      
      poisk = Thursday.indexOf(summ)
      if (poisk > 0) {trash = massbig.indexOf(Thursday)
      return (mass[trash])}
      
      poisk = Friday.indexOf(summ)
      if (poisk > 0) {trash = massbig.indexOf(Friday)
      return (mass[trash])}
      
      poisk = Saturday.indexOf(summ)
      if (poisk > 0) {trash = massbig.indexOf(Saturday)
      return (mass[trash])}
      
      poisk = Sunday.indexOf(summ)
      if (poisk > 0) {trash = massbig.indexOf(Sunday)
      return (mass[trash])}
  }

Немного отрефакторил.

let mass = ['понедельник', 'вторник','среда','четверг','пятница','суббота','воскресенье']
let monday = [1,8,15,22,29,36]
let Tuesday  = [2,9,16,23,30,37]
let Wednesday  = [3,10,17,24,31]
let Thursday = [4,11,18,25,32]
let Friday = [5,12,19,26,33]
let Saturday = [6,13,20,27,34]
let Sunday = [7,14,21,28,35]
let massbig = [monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday]

let getDayOfWeek = function(dayWeek,nomer){
     
      let who = mass.indexOf(dayWeek)+1
      let summ = 0
      let trash = 0
      let poisk = 0
      if (nomer==1 & who==1){
     return 'понедельник'}
      else { summ = nomer + who - 1}
      
      for (let i=0;i<massbig.length;i++){
        poisk = massbig[i].indexOf(summ)
        if (poisk > 0) {trash = massbig.indexOf(massbig[i])
        return (mass[trash])}
       
        }

  }

let getDayOfWeek = function (day, number) {
let days = [‘понедельник’, ‘вторник’, ‘среда’, ‘четверг’, ‘пятница’, ‘суббота’, ‘воскресенье’];
let j = 0;
for (let i = 0; i < days.length; i++) {
if (days[i] === day) {
j = number % 7 + i - 1;
if (j > 6) {
j -=7;
}

}

}
return days[j];
}

оно работает, но непонятно почему…

порвало)

let days = ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье'];
let getDayOfWeek = function (firstDay, number) {
  let itter = number % 7;
  let firstWeek = [];
  let index = 0;
  for(let i = days.indexOf(firstDay); i < days.length; i++) {
    firstWeek.push(days[i]); 
  }    
  if(itter !== 0 && itter <= firstWeek.length) {
    return firstWeek[itter - 1];
  } else if (itter !== 0 && itter > firstWeek.length) {
      index = itter - firstWeek.length - 1;
    } else if (itter === 0) {
        index = days.length - firstWeek.length - 1; 
      }
  return days[index]; 
}
getDayOfWeek('четверг', 21);

Вижу бурю обсуждений в прошлом, вот мое решение:

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

let desiredDay;

let getDayOfWeek = function (currentDay,number) {

for (i=0; i<=week.length-1; i++) {
  
    if (currentDay == week[i]) {          
        desiredDay = week[((i+number)-1)%7];       
    }        
}
return desiredDay

}

И хочется таки выразить респект тому, кто пишет текст заданий упоминая шефа - Кекса. Несколько раз со смеху чуть не упал со стула и множество раз расплывался в улыбке “Да, это не спортивно. Но что взять с кота?”))

1 лайк

Полагаю нужно сперва вычесть единицу а потом брать остаток, посмотрите мое решение.

let getDayOfWeek = function (a, b) {
  let arrayDays = ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье'];
  
let day = b + arrayDays.indexOf(a) - 1;
return arrayDays[day % arrayDays.length];
}

Знаю что этот код можно уменьшить раза так в 2, но как по мне лучше доступно чем лаконично.
Мое решение:

let getDayOfWeek = function(firstDay, dayToCheck) {
  let weekDays = ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье'];
  let weekIndex;
  
//Находим индекс первого дня недели (от 0 до 6)
  for(i = 0; i < weekDays.length; i++) {
    if(weekDays[i].indexOf(firstDay) === 0) {
      weekIndex = i;
      console.log('Первый день недели: ' + weekDays[weekIndex]);
    }
  }
//Ищем день недели по остатку деления
  let dayIndex = (dayToCheck - 1 + weekIndex) % 7;
  console.log('День недели указанного дня: ' + weekDays[dayIndex]);
  return weekDays[dayIndex];
}


getDayOfWeek('воскресенье', 9);

За такое убить мало))

let getDayOfWeek = function(day, date) {
let days = [‘понедельник’, ‘вторник’, ‘среда’, ‘четверг’, ‘пятница’, ‘суббота’, ‘воскресенье’];
date %=7;
for(let i = 0; i < days.length; i++) {
if(days[i] === day) {
return(days[(i + date - 1) % 7]);
}
}
}

Мне так понравился мой код, что я решил поделиться.

1 лайк
Моё решение в лоб:  
      let getDayOfWeek = (firstDayOfWeek, day) => {
          let weekArr = ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье']
          day %= weekArr.length
          day += weekArr.lastIndexOf(firstDayOfWeek) - 1 
          return (day > weekArr.length - 1) ? weekArr[day  - weekArr.length] : weekArr[day]
        }

Переосмыслил получилось короче:

let getDayOfWeek = (firstDayOfWeek, day) => {
    let weekArr = ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье']
    day += weekArr.indexOf(firstDayOfWeek) - 1
    return weekArr[day % weekArr.length]
}
1 лайк

Походу я играю как в кодварс)))

let getDayOfWeek = (firstDayOfWeek, day) => {
  let weekArr = ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье']
  return weekArr[(day += weekArr.indexOf(firstDayOfWeek) - 1) % weekArr.length]
}

Эх руки оторвать) зато компактно:

let getDayOfWeek = (firstDayOfWeek, day) => {
      return (weekArr = ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье']) [(day += weekArr.indexOf(firstDayOfWeek) - 1) % weekArr.length]
}

Ваше решение понравилось больше всего! Гениально и просто! Респект.

Можно еще немного сократить :joy:

let getDayOfWeek = (firstDay, day) => (week = ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье']) [(day + week.indexOf(firstDay) - 1) % 7];