我有一个关于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;
}
}
};
答案 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