Вы можете присвоить word
, но поскольку это примитив, а не указатель на место в области, значение заменяется, но оно не обновляет массив.Вы можете использовать Array.map()
вместо:
function capitalizeLetters(str) {
return str.split(' ')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(' ');
}
console.log(capitalizeLetters('i love javascript'));
Другой вариант - использовать String.replace()
с группами захвата для 1-й буквы (заголовка) и остальных букв (хвоста) в слове.Затем измените регистр и снова объедините их со строковым литералом:
function capitalizeLetters(str) {
return str.replace(/(\w)(\w+)/g,
(_, head, tail) => `${head.toUpperCase()}${tail.toLowerCase()}`
);
}
console.log(capitalizeLetters('i love javascript'));