为什么不能使用此for-of循环更新数组'words'?
function capitalizeLetters(str) {
let words = str.split(' ');
for(var word of words)
word = word.charAt(0).toUpperCase() + word.slice(1);
return words.join(' ');
}
console.log(capitalizeLetters('i love javascript'));
答案 0 :(得分:1)
您可以分配给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()
与捕获组一起用于单词中的第一个字母(头)和其余字母(尾)。然后更改大小写,然后再次将它们与字符串文字结合起来:
function capitalizeLetters(str) {
return str.replace(/(\w)(\w+)/g,
(_, head, tail) => `${head.toUpperCase()}${tail.toLowerCase()}`
);
}
console.log(capitalizeLetters('i love javascript'));
答案 1 :(得分:0)
以下代码段可以更新您的“单词”数组。希望那是您想要的。
function capitalizeLetters(str) {
let words = str.split(' ');
i=0;
for(var word of words){
words[i] = word.charAt(0).toUpperCase() + word.slice(1);
i++;
}
return words.join(' ');
}
console.log(capitalizeLetters('i love javascript'));