函数:根据字符串中是否存在子字符串返回 True/False

Function: return True/False based on presence of substring in string

本文关键字:字符串 返回 True False 存在 是否 函数      更新时间:2023-09-26

我正在做CoderByte的初学者JavaScript挑战。我的代码在"真"的情况下工作,但是一旦我添加一个 else 子句来处理"假"情况,它就会开始行为不端。

挑战: 编写一个函数 ABCheck(str) 来获取正在传递的 str 参数,如果字符 a 和 b 至少在字符串中的任何位置之间恰好分隔 3 位(即。"车道借用"将导致 true,因为 A 和 B 之间正好有三个字符)。否则返回字符串 false。

观察:如果我删除该部分,代码无论如何都会起作用。 但是,如果我添加一个条款来处理虚假案件,我觉得计数器会破裂。例如,对于 false 部分,如果 (AxxB) 位于字符串的最开头,它就会起作用,但即使它在字符串 (zAxxB) 的后面,它也返回 false。也许计数器坏了,或者我的 else 子句放在了不正确的位置?类似的东西。

感谢您的任何提示以及对初学者的耐心等待!

function ABCheck(str) { 
    //normalizes the string into an array without spaces
    var arr = str.toLowerCase().split("").join("").replace( /'s/g, "")
    //searches the entire string for the substring and returns true if it's found
    for(var i = 0; i < arr.length; i++){
        if(arr[i].indexOf('a') != -1 && arr[i+3].indexOf('b') != -1){
            return true
        }
        //returns false if substring doesn't exist in string
        else{
            return false
        }
    }
}
ABCheck(readline()); 
这是因为只有当

它找不到条件arr[i].indexOf('a') != -1 && arr[i+3].indexOf('b') != -1 true时,它才会返回false并且功能结束。

function ABCheck(str) {
    var arr = str.toLowerCase().split("").join("").replace( /'s/g, "")
    for(var i = 0; i < arr.length; i++){
       if(arr[i].indexOf('a') != -1 && arr[i+3].indexOf('b') != -1){
            return true
        }
    }
    return false;
}

因此,它将随时检查条件是否为真,它将在for循环后返回true其他明智,它将返回false

注意:- 我认为.split("").join("")是不必要的工作。

你应该

return false;从循环for(var i = 0; i < arr.length; i++){...}之外