在这种情况下,多维数组值赋值如何工作?

时间:2017-12-08 07:06:00

标签: javascript arrays string uppercase

为什么这个函数不返回大写字母的每个单词的第一个字母的字符串?

function titleCase(str) {
     str = str.split(' ');
     for (var i = 0; i < str.length; i++) {
         str[i][0] = str[i][0].toUpperCase(); 
         console.log(str);
     }
     return str;
}

4 个答案:

答案 0 :(得分:5)

为什么这个函数不返回大写字母的每个单词的第一个字母的字符串的原因是因为字符串不可变

  

您无法更改字符串中的字符。

因此这在javascript中不起作用:

str[i][0] = 'c';

这不会更改字符串str[i]

然而,为了实现您的目标,您可以创建一个首字母大写的新字符串,并将其分配给包含您的字符串的变量。

答案 1 :(得分:3)

您需要用新字符串替换整个数组元素。您所做的只是修改字符串,而不是修改数组中的字符串。

然后你需要再次加入()数组以获得一个返回的字符串

function titleCase(str) {
     str = str.split(' ');
     for (var i = 0; i < str.length; i++) {
         str[i] = str[i][0].toUpperCase() + str[i].slice(1); 
       // ^^ reassign array element with new string ^^   
     }
     return str.join(' ');
}

答案 2 :(得分:1)

&#34; capitalizeText&#34;用于将字符串的第一个字符转换为大写的方法。

String.prototype.capitalizeText = String.prototype.capitalizeText || function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
 // return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();
}

function titleCase(str) {
     str = str.split(' ');

     for (var i = 0; i < str.length; i++) {
         str[i] = str[i].capitalizeText(); 
         console.log(str[i]);
     }

     return str.join(" ");
}

$(document).ready(function(){
        $('#divResult b').text(titleCase("testing words"));
});

Demo

答案 3 :(得分:1)

Ty this:

function titleCase(str) {
     str = str.split(' ');
     for (var i = 0; i < str.length; i++) {
         str[i] = str[i].charAt(0).toUpperCase() + str[i].slice(1); 
         console.log(str[i], 'i');
     }
     return str;
}

进一步解释:

获取第一个字母并将其转换为大写

str[i].charAt(0).toUpperCase()

这是没有第一个字母的其余部分。

str[i].slice(1);