ДОБРО ПОЖАЛОВАТЬ ВЕРНУТЬСЯ В НОВУЮ СЕРИЮ КОДИРОВКИ ДЛЯ СКРАБОВ. Сегодня мы поговорим о проблеме, которую я недавно обнаружил при оценке кода.

Days in the week are represented as strings: 
("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
Write a function solution that, given a string day representing the day of the week and an integer num (between 0 and 500, inclusive), returns the day of the week that is num days later
For example, given day = "Mon" and num = 2, the function should return "Wed". 

Псевдокод:

Читая задачу, мы знаем дни, с которыми работаем. Чтобы получить доступ к дням, мы должны поместить их в массив. Если вы читали предыдущую статью о Кодирование для скрабов: палиндром анаграммы, мы говорили о встроенной функции indexOf (). Мы собираемся использовать indexOf (), чтобы вычислить индекс дня, который передается в качестве аргумента.



Теперь мы знаем, что каждому дню назначен определенный номер. «Пн» всегда будет иметь порядковый номер 0. «Вт» всегда будет иметь порядковый номер 1. Я знаю, что вы это поймете, но вот для вас, учащихся наглядно!

          ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
index #      0      1      2      3      4      5      6 

Поскольку мы знаем, что эта информация будет оставаться постоянной на протяжении всей задачи, независимо от того, какой день передается в качестве аргумента, будет известно, какой у него порядковый номер. Теперь нам нужно найти способ вернуть новый день, если номер индекса превышает 7 или более.

Например, что, если в качестве аргумента передается день «Пт», а переданное число - 5? Мы знаем, что пять дней с «пт» будут «ср». Индекс «Пт» равен 4, и если бы мы добавили 5, он был бы равен 9. Как лучше всего преобразовать 9 и приравнять его к «Ср»? МОДУЛЬ!

1. Make an array of the days 
2. Grab the index number of each day
3. Grab the index of the new day by adding num 
4. Module the index by 7 
5. Return!

Написание функции:

Пришло время сделать это шаг за шагом!

Давайте установим наши дни, сложив их в массив.

function whatDay(day, num){
   let days = ["Mon", "Tues", "Weds", "Thurs", "Fri", "Sat", "Sun"]
}

Теперь нам нужно найти индекс дня, который передается в качестве аргумента.

function whatDay(day, num){
   let days = ["Mon", "Tues", "Weds", "Thurs", "Fri", "Sat", "Sun"]
   let dayIndex = days.indexOf(day)
}

Затем нам нужно выяснить, каким будет индекс нового дня, добавив dayIndex с переданным num.

function whatDay(day, num){
   let days = ["Mon", "Tues", "Weds", "Thurs", "Fri", "Sat", "Sun"]
   let dayIndex = days.indexOf(day)
   let newDayIndex = dayIndex + num
}

У нас есть newDayIndex, и теперь нам нужно модулировать на 7.

function whatDay(day, num){
   let days = ["Mon", "Tues", "Weds", "Thurs", "Fri", "Sat", "Sun"]
   let dayIndex = days.indexOf(day)
   let newDayIndex = dayIndex + num
   let newDayIndex = newDayIndex % 7
}

и теперь мы используем номер индекса и сравниваем его с нашим массивом дней!

function whatDay(day, num){
   let days = ["Mon", "Tues", "Weds", "Thurs", "Fri", "Sat", "Sun"]
   let dayIndex = days.indexOf(day)
   let newDayIndex = dayIndex + num
   let newDayIndex = newDayIndex % 7
   return days[newDayIndex]
}

Заключение:

Спасибо, ребята, что прочитали очередную серию статей «Coding for Scrubs».
Вот и наш готовый продукт! Я надеюсь, вы многому научились. Следите за новостями на следующей неделе!

function whatDay(day, num){
   let days = ["Mon", "Tues", "Weds", "Thurs", "Fri", "Sat", "Sun"]
   let dayIndex = days.indexOf(day)
   let newDayIndex = dayIndex + num % 7
   return days[newDayIndex]
}
console.log(whatDay("Weds", 1))
// => "Thu"