Застрял с вызовом, который заставил меня загладить начало каждого слова

В принципе, задача состоит в том, чтобы иметь алгоритм, который принимает строку и возвращает начало каждого слова, заглавного. Достаточно просто, но я застрял в том, как загладить письмо после поиска пробела в цикле (может быть, есть лучший способ сделать это).

Вот мой код:

 var capitalize = function(string){

var split = string.split(" ");
var collection = [];
var store = [];

for(var i = 0; i < split.length; i++){

  if(split[i]){

      if(split[i] === " "){
        var init = split[i+1].toUpperCase();
        store.push(init);
        collection.push(split[i]);
      } else{
        collection.push(split[i]);
      }
  }

}

var temp = collection.join(" ");
var final = temp.charAt(0).toUpperCase() + temp.slice(1);

return final;

}

Очевидно, что внутри цикла for for он не позволяет мне вносить изменения в массив, который я выполняю. Затем я попробовал цикл while, я попытался использовать array.map, и он все еще не работает. Я просто не понимаю, как я могу использовать это слово после поиска пространства ("").

Любая помощь приветствуется.

0
задан 14 окт. '15 в 19:46
источник поделиться
3 ответов

Разве вы не можете разделить строку на " " и сделать первую букву каждой записи коллекции в верхнем регистре?

Посмотрите здесь, как сделать первую букву в верхнем регистре.

3
ответ дан 14 окт. '15 в 19:48
источник

Нет необходимости во всех переменных

Просто:

function (str){ return str.replace(str.charAt(0), str.charAt(0).toUpperCase()) }

Сделаю.

0
ответ дан 14 окт. '15 в 22:54
источник

Почему вы хотите сделать это в JS, когда вы можете сделать это в CSS

p.capitalize {
    text-transform: capitalize;
}

<p class='capitalize'>
  hello how are you?
</p>

jsfiddle

0
ответ дан 14 окт. '15 в 19:58
источник

Другие вопросы по метке или Задайте вопрос