无法弄清楚为什么我的Codewars kata不会通过...错误消息没有帮助

时间:2018-01-21 02:01:58

标签: javascript

朋友。这是我说的kata ...... https://www.codewars.com/kata/the-hashtag-generator/train/javascript

这是我输入的代码。每次测试调用我都会得到通过,但是有一个错误不会让我得到积分。

function generateHashtag (str) {
  if(str.length > 140 || str.length === 0){
return false  
  } else {
    let ht = str.split(' ').map((item) => item[0].toUpperCase() + item.slice(1)).join(" ")
return "#" + ht
  }

}

这是我得到的错误。我知道必须有一个测试我失败了,因为它没有正确地进入.toUpperCase()方法,但我不能暗示在指令中会发生这种情况。

TypeError: Cannot read property 'toUpperCase' of undefined
    at str.split.map
    at Array.map
    at generateHashtag
    at Object.handleError
    at ContextifyScript.Script.runInThisContext
    at Object.runInThisContext

我对kata有关我的担忧的评论,但我真的不想错过这些观点。

欣赏任何启示。

2 个答案:

答案 0 :(得分:1)

如果item [0]返回undefined,则字符串必须为空。也许你想做类似的事情:

str.split(' ').map(item => item.length > 0 ? item[0].toUpperCase() + item.slice(1) : '')

答案 1 :(得分:0)

这可能发生,因为测试用例是一个空字符串(空字符串表示一个包含任意数量空格但没有字母数字字符的字符串)

所以它将' '(或类似的东西)传递给函数,并且您的拆分将字符串拆分为["", ""],每个索引中没有任何字符。

为了防止出现这种情况,您需要在函数开头执行trimmedStr = str.trim()str = str.trim()之类的操作,以确保这些边缘情况不会漏掉。