Понедельник, 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(' ');
}

Я уверен, что есть более чистое решение, но это то, что мне удалось придумать примерно за час. Я хотел бы вернуться к некоторым из этих решений в будущем и попрактиковаться в рефакторинге.