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