为雄辩的JavaScript任务编写"Bean计数器"

Aus*_*sen 1 javascript

Eloquent JavaScript的这个任务中,你被要求编写两个函数.一个在字符串输入中计算""的数字.下一个功能必须输入两个输入; 一个要搜索的字符串和一个标识要搜索的目标字符的字符串.

我两个都有错误.在第一个函数中,我count总是返回为1.在第二个,它只是返回undefined.

有人能帮助我找到我的错误吗?

function countBs(str) {
    var count = 0;
    for (var i = 0; i < str.length; i++) {
        if (str.charAt(i) === "B") {
            count++;
        }
        return (count);
    }
}

console.log(countBs("BBBBBBBBC"));

function countChar(str, char) {
    var count = 0;
    for (var i = 0; i < str.length; i++) {
        if (str.charAt(i) === "char") {
            count++;
            return (count);
        }
    }
}

console.log(countChar("kakkerlak", "k"));
Run Code Online (Sandbox Code Playgroud)

Joh*_*ing 5

问题是你在for循环中返回计数,所以它在搜索第一个字符后返回.在第二个函数中,您还使用字符串"char"而不是变量char进行比较.

如果你想按自己的方式去做,这里是正确的代码:

function countBs(str) {
    var count = 0;
    for (var i = 0; i < str.length; i++) {
        if (str.charAt(i) === "B") {
            count++;

        }
    }
        return (count); // return outside of for loop
}



console.log(countBs("BBBBBBBBC"));


function countChar(str, char) {
    var count = 0;
    for (var i = 0; i < str.length; i++) {
        if (str.charAt(i) === char) { // use the variable char instead of  the string "char"
            count++;
        }
    }
            return (count); // return outside of the for loop
}
console.log(countChar("kakkerlak", "k"));
Run Code Online (Sandbox Code Playgroud)

这是另一种做你想做的事情.(使用正则表达式)

function countBs(str) {
    var length1 = str.length;
    var length2 = str.replace(/B/g,"").length;
    return length1 - length2;
}



console.log(countBs("BBBBBBBBC"));


function countChar(str, char) {
    var length1 = str.length;
    var regexp =  new RegExp(char, "g");
    var length2 = str.replace(regexp,"").length;
    
    return length1 - length2;
}
console.log(countChar("kakkerlak", "k"));
Run Code Online (Sandbox Code Playgroud)

  • 正如op试图学习的那样,使用他试图使用的方法来包括解决方案可能会有所帮助. (3认同)
  • 是的,刚补充说! (2认同)