作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么我无法使用此 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'));
最佳答案
您可以分配给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'));
关于javascript - 为什么我不能在 for-of 循环中将更新后的值赋给变量 'word' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55445021/
我是一名优秀的程序员,十分优秀!