Понедельник, 1 января | 22:00
Я провела новогодний день, выпекая печенье и готовя карамельную кукурузу с уставшими, но в целом приятными детьми. Я надеялся выделить один час днем на свой час программирования, но у меня ничего не вышло. Итак, в 22:00 после ужина, ванны и сказок на ночь я сел и открыл свой ноутбук.
Я прочитал начало Eloquent Javascript и хотел сесть и проработать некоторые примеры кода в главе Функции, но мысль об открытии другой книги была не привлекательный. Итак, я принялся за работу над проблемами базового алгоритма на freecodecamp.com.
Я справился с этими проблемами летом 2016 года и смог решить их с помощью Google и Stack Overflow, но я никогда не чувствовал, что концепции застряли.
На этот раз я относительно легко справился с первыми четырьмя, укрепляя уверенность после прохождения каждого.
Пятое, Заглавный падеж - приговор, далось нелегко.
«Вернуть указанную строку с заглавной первой буквой каждого слова. Убедитесь, что остальная часть слова написана строчными буквами ».
function titleCase(str) { return str; } titleCase("I'm a little tea pot");
Я начал это за неделю до Рождества и все время застревал.
Моя первая идея заключалась в следующем:
- Разделить строку на массив
- Разделите их на более мелкие массивы
- Используйте цикл for для прописных букв в нулевом индексе и строчных букв во всех остальных индексах
Я продолжал сталкиваться с проблемами при создании нового массива. Тут не повезло.
Я решил:
- Строчные буквы всей строки
- Разделить его на массив
- Используйте цикл for и метод
replace()
для замены первой буквы.
Метод replace()
вызывается для строки и принимает 2 аргумента.
string.replace(subStr, newSubStr)
subStr
- это символы или строка, которые вы хотите заменить, newSubStr
- это то, на что вы хотите заменить subStr
. Оба аргумента могут быть регулярными выражениями, но я решил простое решение.
function titleCase(str) { // make entire string (str) lowercase and split into new array each space let splitString = str.toLowerCase().split(' ') // stores our new array let newArray = [] // loop over each item in the splitString array for (let i = 0; i < splitString.length; i++) { newArray.push(splitString[i].replace(splitString[i].charAt(0), splitString[i].charAt(0).toUpperCase() )) } //join and return newArray return newArray.join(' '); }
Я уверен, что есть более чистое решение, но это то, что мне удалось придумать примерно за час. Я хотел бы вернуться к некоторым из этих решений в будущем и попрактиковаться в рефакторинге.