Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 - Fatal编程技术网

Javascript 数组中的元素不改变值

Javascript 数组中的元素不改变值,javascript,arrays,string,Javascript,Arrays,String,我的函数旨在大写每个单词的第一个字母,但在for循环运行后,数组保持不变。我错过了什么 功能资本化{ var splitStr=str.split'; 对于let i=0;i

我的函数旨在大写每个单词的第一个字母,但在for循环运行后,数组保持不变。我错过了什么

功能资本化{ var splitStr=str.split'; 对于let i=0;i 功能资本化{ var splitStr=str.split'; 对于let i=0;iconsole.log就是这样 当你这样做的时候

var word = splitStr[i];
您没有得到索引的引用,因此当您更新word时,它不会更新数组的索引

splitStr[i] = word[0].toUpperCase() + word.slice(1);

将返回值赋给数组本身

这是一个有效的解决方案-

功能资本化{ var splitStr=str.split'; 对于let i=0;iconsole.log:堆栈溢出 您需要通过将索引i的数组设置为等于某个值来更改数组的值,而不是相反

   function capitalize(str) {
   var splitStr = str.split(' ');
  for (let i = 0; i < splitStr.length; i++) {
  var word = splitStr[i];
 splitStr[i] = word[0].toUpperCase() + word.slice(1);
  }
 return splitStr.join(' ');
 }

你不需要引用每个单词,而需要实际更改它。一个选项是使用map重新分配:

应按照以下步骤修改原始字符串

`var word = splitStr[i];
 splitStr[i] = word[0].toUpperCase() + word.slice(1);`
我进一步删除了中间词变量 功能资本化{ var splitStr=str.split'; 对于let i=0;i你好,我在这里;splitStr[i].toUpperCase应该修复它,您不需要variable这个词。问题是您正在循环中调用一个新变量,然后没有对它做任何操作。将单词分配给splitStr[i],然后更改var单词不会改变splitStr[i],请对代码进行解释,以获得更好的答案。
`var word = splitStr[i];
 word = word[0].toUpperCase() + word.slice(1);`
`var word = splitStr[i];
 splitStr[i] = word[0].toUpperCase() + word.slice(1);`