我目前正在经历免费代码营的第一个JS挑战。
我在标题为“一个句子”的挑战中遇到了麻烦。在这个挑战中,我需要编写一个函数,该函数将给定字符串中的每个单词的第一个字母大写,并将所有其他字母小写。Here's到挑战的链接我写了下面的代码,试图完成以下任务:
将|str|拆分为一个字母数组
将局部变量|toCAP|定义为空格后的每个字母|“"|
如果一个字母跟在空格后面
大写|字母|
推送|字母|而不是
否则
| LETTER |定义为字母
|字母|小写
| LETTER |推送到LETTER索引
返回不带间隔符的数组
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");为什么第二个条件不起作用,每个单词的第一个字母都大写?
发布于 2018-01-20 16:47:47
这里是使用forEach循环而不是传统的for循环的另一种方法-首先将传递的字符串拆分成单词,然后将每个单词拆分成字母。将第一个字母大写并将所有字母psuh放入一个返回的数组中。
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"));
发布于 2018-01-20 17:37:40
您希望首先将字符串设置为小写,以说明输入的所有情况。我在代码中包含了一些注释。在我取出的你的解决方案中有过多的字符串重新分配。您的第二个条件是没有正确选择字母,您需要arri而不是arri -1
function titleCase(str) {
var newStr = str.toLowerCase(); //hold a lowercase version of str
var letterArray = newStr.split("");
var letter = "";
for (var i = 0; i < letterArray.length; i++) {
if (i == 0) { //test for first letter
letterArray[0] = letterArray[0].toUpperCase(); //reassign as the uppercase version
} else if (letterArray[i] == " ") {
letterArray[i + 1] = letterArray[i + 1].toUpperCase(); //if space is detected, set the next letter to uppercase
}
}
return letterArray.join(""); //join into a string
}这是我想出的解决方案:
function titleCase(str) {
var newStr = str.toLowerCase();
var result;
var arr = newStr.split("");
arr[0] = arr[0].toUpperCase();
for (var i = 0; i < arr.length; i++){
if (arr[i] === " "){
arr[i + 1] = arr[i + 1].toUpperCase();
}
}
result = arr.join("");
return result;
}发布于 2020-02-11 08:34:34
function titleCase(str) {
return str.toLowerCase().split(' ').map((word) => (word.charAt(0).toUpperCase() + word.slice(1))).join(' ');
}https://stackoverflow.com/questions/48354088
复制相似问题