函数在代码大战中返回类型错误,不知道为什么

时间:2019-04-09 09:22:00

标签: javascript

我现在正在使用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上不起作用,在其他环境下也能正常工作

2 个答案:

答案 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('');
}