嗨,你们从编码器字节处理javascript中的问题。问题是:
使用JavaScript语言,让函数ABCheck(str)传递str参数并返回字符串true如果字符a和b在字符串中的任何位置恰好分开3个位置至少一次(即“lane”借用“会导致真实,因为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")
我变得虚假。谁能发现我做错了什么?
答案 0 :(得分: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>
答案 1 :(得分:0)
我认为你在这里遇到的问题是使用Split函数,因为这会将你的字符串分成一个单词数组(使用空格字符作为新单词的指示)。
此外,你的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())。