// — — Направления
// Напишите функцию, которая принимает строку. Функция должна
// сделать заглавной первую букву каждого слова в строке, затем
// вернуть строку с заглавной буквы.
// - - Примеры
// Capitalize(‘короткое предложение’) → ‘Короткое предложение’
// capitalize(‘ленивая лиса’) → ‘Ленивая лиса’
// Capitalize('смотрите, это работает!') → 'Смотрите, это работает!'
Этот вызов хорош для двух вещей.
- Он проверяет вашу способность преобразовывать данные и возвращать их в исходную форму.
- 2. Практика повторения.
Эта задача не особенно ошеломляет, но вам нужно некоторое время, чтобы подумать о том, как вы собираетесь ее решать.
Давайте поговорим об этом в псевдокоде.
Итак, что нам нужно сделать? Нам нужно написать функцию, которая принимает строку и возвращает новую строку, в которой первая буква каждого слова будет заглавной. Я решил эту проблему несколькими способами, и я разберу каждое решение шаг за шагом.
Преобразование -
Если мы хотим выполнить итерацию по строке, мы можем использовать стандартный цикл for или цикл for of для строки.
Я решил, что будет проще работать с массивом, чем со строкой, потому что строки неизменяемы.
Вот мои первые шаги:
let finalArray = []
let arr = str.split(‘ ‘)
Я создал пустой массив, чтобы вставить в него слова, написанные с заглавной буквы, и разделил строку на массив, чтобы выполнять над ним действия. (обратите внимание, что в моем аргументе разделения есть пробел между кавычками. Это означает, что элементы в массиве будут разделены между пробелами в нашей входной строке.)
Петля -
Следующее, что я хочу сделать, это создать цикл, чтобы мы могли перебирать каждый элемент в нашем массиве, чтобы выполнять над ним действия.
for (пусть слово arr) {
}
Сложность этой задачи заключается в том, чтобы понять, что для того, чтобы получить доступ к первой букве каждого слова, мы должны разбить слово на отдельные буквы.
let letters = word.split('') // значение "привет" превращается в ['h', 'e', 'l', 'l', 'o']
Теперь, когда мы разделили слово, мы можем сделать первую букву каждого слова заглавной.
буквы[0].toUpperCase()
Теперь пришло время соединить слово вместе в его новой форме.
буквы[0].toUpperCase() + word.slice(1)
и поскольку мы помещаем его в новый массив, мы можем фактически одновременно помещать эти конкатенированные строки в наш push-аргумент.
finalArray.push(letters[0].toUpperCase() + word.slice(1))
Когда цикл for заканчивается, мы хотим вернуть наш новый массив, но его нужно соединить между пробелами так же, как он был разделен между своими пробелами.
вернуть finalArray.join(' ')
Это решение проходит все тесты. Он эффективен, очень удобен для чтения и делает именно то, что должен.
Второе решение -
Следующее решение точно семантическое, но это однострочное решение.
return str.split(‘ ‘).map(word =› word[0].toUpperCase() + word.slice(1)).join(‘ ‘)
По сути, это то же самое, за исключением использования нового массива для выделения памяти.
Разделите его на массив слов, сопоставьте каждое слово и верните новую строку, в которой первая буква заглавная.
Вот, пожалуй, и вся проблема. Как я уже сказал, это не совсем ошеломляющая проблема, но она может стать немного сложной, когда дело доходит до реализации.
Я надеюсь, что это был полезный технический пост в блоге! Мне очень нравится писать эти посты, потому что я нахожу страсть в обучении основам кодирования новых инженеров-программистов. Далее я буду решать более сложные задачи по коду. Спасибо за чтение!