在javascript中遇到特定功能的问题

时间:2015-04-08 19:29:35

标签: javascript

我有一个关于javascript的问题。我创建了一个提示用户输入字符串的函数,一旦输入字符串,将执行for循环遍历字符串的整个长度,查找字符“B”然后返回“B”的数字在结果变量中找到了s。据我所知,我觉得我的代码应该有效,但无论我的代码中有多少“B”,函数都会一直返回2.有关为什么会这样做的任何想法

function countBs(string) {
    var result = 1;
    var string = prompt("Please Enter a String");
    for (count = 0; count < string.length; string++) {
        if (string.charAt(count) == "B") {
            result += 1;
            return result;
        }
    }
};

4 个答案:

答案 0 :(得分:2)

您目前有:

function countBs(string) {
var result = 1;
var string = prompt("Please Enter a String");
for (count = 0; count < string.length; string++) {
    if (string.charAt(count) == "B") {
            result += 1;
            return result;
        }
    }
}

应该是:

function countBs(string) {
    var result = 0;
    var string = prompt("Please Enter a String");
    for (count = 0; count < string.length; count++) {
        if (string.charAt(count) == "B") {
            result += 1;
        }
    }
    return result;
}

(注意计数++,结果从0-> 1的变化,以及移动的返回)

答案 1 :(得分:1)

我想你想要这个:

function countBs(string) {
    var result = 0;
    var string = string || prompt("Please Enter a String");
    for (var count = 0; count < string.length; ++count)
        if (string.charAt(count) == "B")
            result += 1;
    return result;
};

确保它是“var count”而不仅仅是“count”,否则你将污染全局的sapce。

还有其他方法:

"BBBBBB".split('B').length-1

("BBBBBBB".match(/B/g)||"").length

或不区分大小写

("BbBbBbB".match(/B/gi)||"").length

答案 2 :(得分:0)

您需要将for循环中的字符串更改为count

function countBs(string) {
    var result = 1;
    var string = prompt("Please Enter a String");
    for (count = 0; count < string.length; count++) {
        if (string.charAt(count) == "B") {
            result += 1;

        }
    }
 return result;
};

答案 3 :(得分:0)

function countBs() {                                      // no parameter
    var string = prompt("Please Enter a String");         // provide string
    return string.split('').reduce(function (x, letter) { // string became array and array can use build in method reduce
        return letter === 'B' ? x + 1 : x;                // test for B and return increment, otherwise old count
    }, 0);                                                // start with count 0
};

取字符串并制作一个真正的数组,然后迭代所有字母并计算Bs