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

标签 javascript arrays string join capitalize

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

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/

相关文章:

javascript - 当文本变长时,我的 d3 y 轴溢出,如何在图表中打破单词?

javascript - 如何选择具有 class 属性且值完全以给定字符串开头的元素(使用 jQuery)?

javascript - 只有 "onload"形式的 JavaScript 函数有效吗?

c++ - 如何有效地将大数存储在整数数组中? C++

c# - 默认 C# 字符串编码

Java - 树中的缩进列表

python - 如何在Python中轻松连接列表中某种格式的字符串?

javascript - IE6 : Background-Image Load Event

ios - 将数组字段传递给 Swift 中的变量的此 JSON 语句的正确语法?

python - 取列表列表的平均值,忽略零值