我现在正在使用CodeWars,这是链接
https://www.codewars.com/kata/camelcase-method/train/javascript
目的是接受字符串like this
,并以驼峰式LikeThis
返回。我写了一个可以在其他JavaScript环境(codeStich)中使用的解决方案,但是当我尝试在CodeWars上运行它时,前两个测试通过了,然后返回了失败。这是我的代码:
String.prototype.camelCase=function(){
string = this.split('');
string[0] = string[0].toUpperCase();
for (let i = 0; i < string.length; i ++) {
if (string[i] === ' ') {
string[i + 1] = string[i + 1].toUpperCase();
string.splice(i, 1);
i--;
}
}
return string.join('');
}
TypeError: Cannot read property 'toUpperCase' of undefined
我真的不明白为什么在代码在其他网站上工作时会发生这种情况
编辑:
这是通过'test case'.camelCase(); 'camel case'.camelCase();
并通过'camel case method'.camelCase();
失败的两个测试。我的主要困惑是为什么它在CodeWars上不起作用,在其他环境下也能正常工作
答案 0 :(得分:0)
您需要添加一些基本检查,以验证该位置是否存在字符。
String.prototype.camelCase=function(){
//your code here
string = this.split('');
if(string[0])
string[0] = string[0].toUpperCase();
for (let i = 0; i < string.length; i++) {
if (string[i] === ' ') {
if(string[i+1])
string[i + 1] = string[i + 1].toUpperCase();
string.splice(i, 1);
i--;
}
}
return string.join('');
}
我尝试提交这段代码,它通过了所有测试。
答案 1 :(得分:0)
您也可以使用类似的东西
1。
function camelCase(a){
string = a.trim().split(' ');
var temp = []
if(string[0])
for (let i = 0; i < string.length; i++) {
temp.push(string[i].replace(string[i].charAt(0), string[i].charAt(0).toUpperCase()))
}
return temp.join('');
}
2。
function camelCase(a){
string = a.trim().split(' ');
var temp = []
string.map(function(item,index){
temp.push(item.replace(item.charAt(0), item.charAt(0).toUpperCase()))
})
return temp.join('');
}