首页 > 解决方案 > 数组中的元素没有改变值

问题描述

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

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

console.log(capitalize('my test'));

标签: javascriptarraysstring

解决方案


只需替换word =splitStr[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(' ');
}

console.log(capitalize("this is it"));

原因:因为您没有在原始字符串中更新它splitStrtoUpperCase不修改原始元素但返回更新后的值,因此您需要将其分配回该特定字符串索引以进行修改。


推荐阅读