2014-09-21 45 views
2

嗨,大家好,我们从编码器字节处理javascript问题。问题是:Coderbyte问题的Javascript代码

使用JavaScript语言,请使用ABCheck(str)函数传递str参数并返回字符串true,如果字符a和b在字符串中的任意位置至少有3处相隔至少一次(即“借用的车道”将导致真实,因为a和b之间恰好有三个字符)。否则返回字符串false。

使用下面的框中的参数测试功能以不同的参数测试您的代码。

function abcheck(str){ 
     for(var i = 0; i < str.length; i++) { 
      if(str.split(" ")[i] === "a" && str.split(" ")[i+4] === "b") 
       { 
        return true;  
       } 
      else{ 
        return false; 
      } 
    } 
} 

做了检查

abcheck("Laura sobs") 

后我收到假的。任何人都可以发现我做错了什么吗?

回答

1

试试这个。使用警报以更好地演示。你正在分割空间中的字符串,而不是像我认为你想要做的那样的每个字符。

<script> 
str="Laura sobs"; 

function abcheck(str){ 
     for(var i = 0; i < str.length; i++) { 
      if(str.split("")[i] === "a" && str.split("")[i+4] === "b") 
       { 
        alert ("true")  
       } 
      else{ 
        // do nothing 
      } 
    } 
} 

abcheck("Laura sobs") 

</script> 
+0

愚蠢的错误。谢谢! – theamateurdataanalyst 2014-09-21 01:27:33

0

我认为你正面临着这里的问题是使用,因为这将您的字符串分隔成单词(使用空格字符作为新词的指示)的阵列拆分功能。

此外,for循环在到达字符串末尾时可能会遇到问题,可以说字符串长度为10个字符,一旦循环达到第7次迭代,它将不再能够将4添加到索引并检查该位置的字符,所以最好只迭代到最后一个字符的第4个字符,因为我们已经知道不会有任何进一步可能的检查来执行

删除split( “”),并且稍微改变你的循环条件应该可以解决你遇到的问题,因此我相信函数看起来应该是这样的:

function abcheck(str){ 
     for(var i = 0; i < str.length - 4; i++) { 
      if(str[i] === "a" && str[i+4] === "b") 
       { 
        return true;  
       } 
      else{ 
        return false; 
      } 
    } 
} 

最后,根据您需要的功能的深入程度,您可能还需要测试这些字母的大写版本(即,在条件中使用str.toLowerCase())。

+0

这段代码实际上是错误的。我不明白为什么。 – theamateurdataanalyst 2014-09-22 00:40:08