我刚刚开始学习JavaScript,并在freecodecamp中尝试篝火问题。我的代码是为了使每个单词的首字母大写。 代码:
function titleCase(str) {
str = str.toLowerCase ();
var arr = str.split(' ');
for(var i=0; i<arr.length; ++i) {
arr[i][0] = arr[i][0].toUpperCase();
}
str = arr.join (' ');
return str;
//return arr[0][0];
}
titleCase("I'm a little tea pot");
而是返回错误:
TypeError:0是只读的
我会理解错误,我一直在尝试字符串上的操作(它们是不可变的)。但我正在尝试编辑一个完全可变的数组。
我的代码出了什么问题?
答案 0 :(得分:1)
您的代码没有给出任何错误,但它没有将第一个字符设为大写
替换此行
arr[i][0] = arr[i][0].toUpperCase();
通过
arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
答案 1 :(得分:0)
您更改了您的Javascript 像这样
function titleCase(str) {
str = str.toLowerCase ();
var arr = str.split(' ');
for(var i=0; i<arr.length; ++i) {
arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
}
str = arr.join (' ');
return str;
//return arr[0][0];
}
titleCase("I'm a little tea pot");
答案 2 :(得分:0)
arr
确实是一个数组。它的元素是可变的,因此您可以用另一个字符串替换 arr[i]
。
然而,arr[i]
是一个字符串。尝试分配给 arr[i][0]
无效,因为您正在尝试修改不可变字符串。
该错误来自 freeCodeCamp 的控制台,它正确地将此标记为非法,但没有给出正确的解释。