Так что я хочу загладить начальную букву каждого слова в строке. Вот как я это сделал:Почему я должен подтолкнуть свою строку в массив, чтобы снова присоединиться к ней?
function LetterCapitalize(str) {
var arr = str.split(" ");
var newArr = [];
for(i = 0; i < arr.length; i++) {
var newStr = arr[i].toString();
newArr.push(newStr.substring(0,1).toUpperCase() + newStr.substring(1,newStr.length));
}
return newArr.join(" ");
}
Этот код верен, и первая буква каждого слова в строке была заглавной. Однако, когда я пытался сократить свой код, как это, он вернулся только последнее слово строки с первой заглавной буквой, но ничего другого:
function LetterCapitalize(str) {
var arr = str.split(" ");
var newArr = [];
for(i = 0; i < arr.length; i++) {
var newStr = arr[i].toString();
}
return newStr.substring(0,1).toUpperCase() + newStr.substring(1,newStr.length);
}
В общем, что я сделал было удалить ту часть, где я толкаю новую строку в новый массив, только чтобы присоединиться к ней обратно в строку.
Прочтите два фрагмента кода еще раз. Следуйте своим действиям. Как они отличаются? Подсказка: в последнем случае строка с 'return' вызывается только один раз * для всей строки (с последним значением newStr); в то время как в первом случае капитализация делается для * каждого * отдельных слов, как разделение, а затем все отдельные капитализированные результаты снова объединяются. – user2864740
Это потому, что вы всегда создаете новую переменную 'newStr'inside loop и берете последнюю, которую нужно вернуть. –