繁体   English   中英

Freecodecamp中的Javascript代码出错

[英]Error in Javascript Code in Freecodecamp

function titleCase(str) {
     var strArr = str.toLowerCase().split(' ');
     var strUp = [str.length];  
     for(var i=0;i<str.length;i++)
     {
        strUp[i] = strArr[i].charAt(0).toUpperCase();
     }

     return strUp.join(' ');  
}

titleCase("I'm a little tea pot");

我陷入了freecodecamp的一个问题。

它显示:

无法读取未定义的属性'charAt'。

=为什么你越来越原因Cant read property 'charAt' of undefined".是您正在使用str.lengthfor循环,你应该使用strArr.length ,长度str总是比长度大strArr和这就是为什么你undefined最后一部分迭代。

=你还应该添加strArr[i].slice(1); 添加单词上的其余字母。 strArr[i].charAt(0).toUpperCase()只返回第一个字母(Capital)。 你应该通过添加strArr[i].slice(1);来追加其余部分strArr[i].slice(1);

 function titleCase(str) { var strArr = str.toLowerCase().split(' '); var strUp = []; for (var i = 0; i < strArr.length; i++) { strUp[i] = strArr[i].charAt(0).toUpperCase() + strArr[i].slice(1); } return strUp.join(' '); } console.log(titleCase("I'm a little tea pot")); 

您应该在循环条件中使用strArr的长度:

for(var i=0; i <strArr.length;i++)

或者只是使用for - of

当你使用str的长度时,它可能会比strArr的长度更长,所以它会超出数组索引并导致错误。

2示例如下所示:

1)UseMapFunction - 这可能是最好的方法,因为我们只是将val.charAt(0)替换为val.charAt(0).toUpperCase()

2)更详细的方法是使用substring和良好的ole loop 效果也很好。

 function UseMapFunction(str) { var strArr = str.toLowerCase().split(' '); var newStrArr = strArr.map(function(val){ return val.replace(val.charAt(0),val.charAt(0).toUpperCase()); }); console.log(newStrArr.join(' ')); } UseMapFunction("one way to do it is with map"); function UseSubstring(str) { var strArr = str.split(' '); var newArr =[]; for (var i = 0; i<strArr.length; i++){ newArr.push(strArr[i].substring(0,1).toUpperCase() + strArr[i].substring(1,strArr[i].length).toLowerCase()); } console.log(newArr.join(' ')); } UseSubstring("alternatively use substring and it works fine too"); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM