作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在经历免费代码营的第一个 JS 挑战。
我在标题为“句子首字母大写”的挑战中遇到了问题。在这个挑战中,我需要编写一个函数,将给定字符串中单词的每个第一个字母大写,并将所有其他字母小写。 Here's挑战链接我编写了以下代码,试图完成以下任务:
分割|str|到字母数组
定义局部变量|toCAP|对于空格后面的每个字母 |""|
如果字母出现在空格之后
大写|字母|
推|信|相反
其他
|信|定义为字母
|信|是小写的
|信|被推送到字母索引
返回不带空格的数组
function titleCase(str) {
str.toLocaleLowerCase();
var letterArray = str.split("");
var letter = "";
for (var i = 0; i < letterArray.length; i++) {
if (i == 0) {
letter = letterArray[0];
letter.toUpperCase();
letterArray[0] = letter;
} else if (letterArray[i - 1] == " ") {
letter = letterArray[i];
letter.toUpperCase();
letterArray[i] = letter;
}
}
return letterArray.join("");
}
titleCase("I'm a little tea pot");
为什么第二个条件不起作用,将每个单词的第一个字母大写?
最佳答案
这是使用 forEach 循环而不是传统 for 循环的替代方法 - 首先将传递的字符串拆分为单词,然后将每个单词拆分为字母。将第一个字母大写,并将所有字母放入返回的数组中。
function titleCase(str) {
var wordArray = str.toLowerCase().split(" ");
var sentenceArray = [];
wordArray.forEach(function(word) {
var letters = word.split('');
letters[0] = letters[0].toUpperCase();
sentenceArray.push(letters.join(''))
})
return sentenceArray.join(" ");
}
console.log(titleCase("I'm a little tea pot"));
console.log(titleCase("sHoRt AnD sToUt"));
console.log(titleCase("HERE IS MY HANDLE HERE IS MY SPOUT"));
关于javascript - 免费编程营挑战 - 标题案例 A 句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48354088/
我是一名优秀的程序员,十分优秀!