gpt4 book ai didi

javascript - 为什么我必须将字符串插入数组才能再次将其连接回来?

转载 作者:行者123 更新时间:2023-11-28 19:04:48 25 4
gpt4 key购买 nike

所以我想将字符串中每个单词的首字母大写。我是这样做的:

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);

}

基本上,我所做的就是删除将新字符串插入新数组的部分,只是将其重新连接回字符串。

最佳答案

问题出在 for 循环部分代码中。在每次迭代中,newstr 都会获取 arr[i].toString(); 的值和旧值,即 arr[i-1].toString( );newStr 中的 被覆盖。因此,只有最后一次迭代的值存储在 newStr

for(i = 0; i < arr.length; i++) {
var newStr = arr[i].toString();
}

试试这个:

function LetterCapitalize(str) { 
var arr = str.split(" ");
var newStr = "";
for(i = 0; i < arr.length; i++) {
var temp = arr[i].toString();
newStr = newStr + temp.substring(0,1).toUpperCase() + temp.substring(1,temp.length)+" ";
}
return newStr;
}

alert(LetterCapitalize("hello i am rohit "));

关于javascript - 为什么我必须将字符串插入数组才能再次将其连接回来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31901613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com