Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我必须将字符串推入数组中,然后才能再次将其加入?_Javascript_Arrays_String_Join_Capitalize - Fatal编程技术网

Javascript 为什么我必须将字符串推入数组中,然后才能再次将其加入?

Javascript 为什么我必须将字符串推入数组中,然后才能再次将其加入?,javascript,arrays,string,join,capitalize,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.substrin

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

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

}
函数字母大写(str){
var arr=str.split(“”);
var newArr=[];
对于(i=0;i
此代码正确,字符串中每个单词的第一个字母都大写。但是,当我试图像这样缩短代码时,它只返回字符串的最后一个单词,第一个字母大写,其他什么都没有:

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

}
函数字母大写(str){
var arr=str.split(“”);
var newArr=[];
对于(i=0;i

基本上,我所做的是删除将新字符串推入新数组的部分,然后将其重新连接到字符串中。

您可以通过替换函数实现这一点,而无需拆分

function LetterCapitalize(str) { 
  return str.replace(/(^| )([a-z])/g, function(x,y,z) {
    return y+z.toUpperCase()
  }
    )
}
console.log(LetterCapitalize('foo bar buz'))

您可以通过替换函数实现这一点,而无需拆分

function LetterCapitalize(str) { 
  return str.replace(/(^| )([a-z])/g, function(x,y,z) {
    return y+z.toUpperCase()
  }
    )
}
console.log(LetterCapitalize('foo bar buz'))

您可以通过替换函数实现这一点,而无需拆分

function LetterCapitalize(str) { 
  return str.replace(/(^| )([a-z])/g, function(x,y,z) {
    return y+z.toUpperCase()
  }
    )
}
console.log(LetterCapitalize('foo bar buz'))

您可以通过替换函数实现这一点,而无需拆分

function LetterCapitalize(str) { 
  return str.replace(/(^| )([a-z])/g, function(x,y,z) {
    return y+z.toUpperCase()
  }
    )
}
console.log(LetterCapitalize('foo bar buz'))

问题出在
回路零件代码的
中。这里,在每次迭代中,
newstr
获取
arr[i].toString()的值和旧值,即
arr[i-1].toString()newStr
中的code>被覆盖。因此,只有最后一次迭代值存储在
newStr

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

函数字母大写(str){
var arr=str.split(“”);
var newStr=“”;
对于(i=0;i警惕(字母大写(“你好,我是罗希特”)问题在于
循环零件代码的
。这里,在每次迭代中,
newstr
获取
arr[i].toString()的值和旧值,即
arr[i-1].toString()newStr
中的code>被覆盖。因此,只有最后一次迭代值存储在
newStr

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

函数字母大写(str){
var arr=str.split(“”);
var newStr=“”;
对于(i=0;i警惕(字母大写(“你好,我是罗希特”)问题在于
循环零件代码的
。这里,在每次迭代中,
newstr
获取
arr[i].toString()的值和旧值,即
arr[i-1].toString()newStr
中的code>被覆盖。因此,只有最后一次迭代值存储在
newStr

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

函数字母大写(str){
var arr=str.split(“”);
var newStr=“”;
对于(i=0;i警惕(字母大写(“你好,我是罗希特”)问题在于
循环零件代码的
。这里,在每次迭代中,
newstr
获取
arr[i].toString()的值和旧值,即
arr[i-1].toString()newStr
中的code>被覆盖。因此,只有最后一次迭代值存储在
newStr

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

函数字母大写(str){
var arr=str.split(“”);
var newStr=“”;
对于(i=0;i警惕(字母大写(“你好,我是罗希特”)可能您对功能中的返回感到困惑:

函数字母大写(str){
var arr=str.split(“”),
newArr=arr.map(
函数(字){
返回word.substring(0,1).toUpperCase()+word.substring(1);
});
返回newArr.join(“”);
}

警告(LetterCapitalize(“这是一个测试”)
可能您对功能中的返回感到困惑:

函数字母大写(str){
var arr=str.split(“”),
newArr=arr.map(
函数(字){
返回word.substring(0,1).toUpperCase()+word.substring(1);
});
返回newArr.join(“”);
}

警告(LetterCapitalize(“这是一个测试”)
可能您对功能中的返回感到困惑:

函数字母大写(str){
var arr=str.split(“”),
newArr=arr.map(
函数(字){
返回word.substring(0,1).toUpperCase()+word.substring(1);
});
返回newArr.join(“”);
}

警告(LetterCapitalize(“这是一个测试”)
可能您对功能中的返回感到困惑:

函数字母大写(str){
var arr=str.split(“”),
newArr=arr.map(
函数(字){
返回word.substring(0,1).toUpperCase()+word.substring(1);
});
返回newArr.join(“”);
}

警报(字母大写(“这是一个测试”)
请再次阅读这两个代码段。跟踪他们的行动。它们有何不同?提示:在后一种情况下,对整个字符串只调用一次带有
return
的行(分配了newStr的最后一个值);在