Javascript 函数,用于检查字符串中字符的使用次数

Javascript 函数,用于检查字符串中字符的使用次数,javascript,if-statement,while-loop,Javascript,If Statement,While Loop,我正在编写一个函数,该函数将字符串作为参数,检查给定字符(在本例中为“B”),然后返回一个反映该字符出现次数的整数。我知道这可以通过使用regex之类的工具来实现,但是我使用的教程到目前为止没有提到regex。代码时间: function countBs(string) { var i = 0; var n = 0; var position = string.charAt(n); while (i < string.length) { if (string.ch

我正在编写一个函数,该函数将字符串作为参数,检查给定字符(在本例中为“B”),然后返回一个反映该字符出现次数的整数。我知道这可以通过使用regex之类的工具来实现,但是我使用的教程到目前为止没有提到regex。代码时间:

function countBs(string) {
  var i = 0;
  var n = 0;
  var position = string.charAt(n);

  while (i < string.length) {
    if (string.charAt(n) == "B")
      n += 1;
      i++; //This line causes the following else statement to throw a syntax error. But it's the only way I can think of to have the loop continue iteration *while* checking for equivalence to "B" 
    else
      i++;
    return n;
  }

}
函数countBs(字符串){
var i=0;
var n=0;
变量位置=字符串.charAt(n);
while(i

然后检查
console.log(countBs(“ABBA”)

尝试将其用大括号括起来:

if (string.charAt(n) == "B")
  {    n += 1;
       i++;
  } 

else
需要前面的
if
,中间不需要其他语句
i++
之外,如果

尝试用大括号将其括起来:

if (string.charAt(n) == "B")
  {    n += 1;
       i++;
  } 

else
需要前面的
if
,中间不需要其他语句
i++
之外,如果

尝试用大括号将其括起来:

if (string.charAt(n) == "B")
  {    n += 1;
       i++;
  } 

else
需要前面的
if
,中间不需要其他语句
i++
之外,如果

尝试用大括号将其括起来:

if (string.charAt(n) == "B")
  {    n += 1;
       i++;
  } 

else
需要前面的
if
,中间不需要其他语句
i++
之外,如果

您的代码已完全损坏

函数countBs(字符串){
var i=0;
var n=0;
//var position=string.charAt(n);//删除--不需要
而(i
因此,正确的代码是:

function countBs(string) {
  var i = 0;
  var n = 0;

  while (i < string.length) {      
    if (string.charAt(i) == "B") n++;
    i++;
  }
  return n;                        
}
现代JS 作为参考,在现代JS中,您可以避免使用循环和变量。首先,让我们编写一个单独的检查函数:

function isB(c) { return c === 'B'; }
然后写

function countBs(str) {
    return str . split('') . filter(isB) . length;
}
或者,使用
reduce

function countBs(str) { 
    return str.split('').reduce(function(cnt, c) {
        return cnt + isB(c);
    }, 0);
}
或者,尽管您说过不想使用regexp:

function countBs(str) {
    return (str.match(/B/g) || []) . length;
}
如果您是在ES6环境中编写,那么使用数组理解

function countBs(str) {
    return [for (c of str) if (isB(c)) c] . length;
}

你的密码很坏

函数countBs(字符串){
var i=0;
var n=0;
//var position=string.charAt(n);//删除--不需要
而(i
因此,正确的代码是:

function countBs(string) {
  var i = 0;
  var n = 0;

  while (i < string.length) {      
    if (string.charAt(i) == "B") n++;
    i++;
  }
  return n;                        
}
现代JS 作为参考,在现代JS中,您可以避免使用循环和变量。首先,让我们编写一个单独的检查函数:

function isB(c) { return c === 'B'; }
然后写

function countBs(str) {
    return str . split('') . filter(isB) . length;
}
或者,使用
reduce

function countBs(str) { 
    return str.split('').reduce(function(cnt, c) {
        return cnt + isB(c);
    }, 0);
}
或者,尽管您说过不想使用regexp:

function countBs(str) {
    return (str.match(/B/g) || []) . length;
}
如果您是在ES6环境中编写,那么使用数组理解

function countBs(str) {
    return [for (c of str) if (isB(c)) c] . length;
}

你的密码很坏

函数countBs(字符串){
var i=0;
var n=0;
//var position=string.charAt(n);//删除--不需要
而(i
因此,正确的代码是:

function countBs(string) {
  var i = 0;
  var n = 0;

  while (i < string.length) {      
    if (string.charAt(i) == "B") n++;
    i++;
  }
  return n;                        
}
现代JS 作为参考,在现代JS中,您可以避免使用循环和变量。首先,让我们编写一个单独的检查函数:

function isB(c) { return c === 'B'; }
然后写

function countBs(str) {
    return str . split('') . filter(isB) . length;
}
或者,使用
reduce

function countBs(str) { 
    return str.split('').reduce(function(cnt, c) {
        return cnt + isB(c);
    }, 0);
}
或者,尽管您说过不想使用regexp:

function countBs(str) {
    return (str.match(/B/g) || []) . length;
}
如果您是在ES6环境中编写,那么使用数组理解

function countBs(str) {
    return [for (c of str) if (isB(c)) c] . length;
}

你的密码很坏

函数countBs(字符串){
var i=0;
var n=0;
//var position=string.charAt(n);//删除--不需要
而(i
因此,正确的代码是:

function countBs(string) {
  var i = 0;
  var n = 0;

  while (i < string.length) {      
    if (string.charAt(i) == "B") n++;
    i++;
  }
  return n;                        
}
现代JS 作为参考,在现代JS中,您可以避免使用循环和变量。首先,让我们编写一个单独的检查函数:

function isB(c) { return c === 'B'; }
然后写

function countBs(str) {
    return str . split('') . filter(isB) . length;
}
或者,使用
reduce

function countBs(str) { 
    return str.split('').reduce(function(cnt, c) {
        return cnt + isB(c);
    }, 0);
}
或者,尽管您说过不想使用regexp:

function countBs(str) {
    return (str.match(/B/g) || []) . length;
}
如果您是在ES6环境中编写,那么使用数组理解

function countBs(str) {
    return [for (c of str) if (isB(c)) c] . length;
}
这是我的答案

function countBs(Str) 
{
  let char = "B" ;
  return  String(Str).split(char).length - 1; 

 } 
function countChar(Str, char) 
{
  return  String(Str).split(char).length - 1; 

 } 
这是我的答案

function countBs(Str) 
{
  let char = "B" ;
  return  String(Str).split(char).length - 1; 

 } 
function countChar(Str, char) 
{
  return  String(Str).split(char).length - 1; 

 } 
这是我的答案

function countBs(Str) 
{
  let char = "B" ;
  return  String(Str).split(char).length - 1; 

 } 
function countChar(Str, char) 
{
  return  String(Str).split(char).length - 1; 

 } 
这是我的答案

function countBs(Str) 
{
  let char = "B" ;
  return  String(Str).split(char).length - 1; 

 } 
function countChar(Str, char) 
{
  return  String(Str).split(char).length - 1; 

 } 

啊,我明白了。感谢您在if/else语句中提供关于花括号用法的说明。我将
I++
放在
else
中,因为我希望条件继续迭代,即使
string.charAt(n)!=“B”
另外,如果两条语句中都有
i++
,则if和else根本不需要
i++
。谢谢您的提示!我想我现在已经基本明白了。我只是将
I++
移到了条件语句之外。现在我可以检查“B”在字符串中出现的次数,直到另一个字符出现为止。所以,如果我把“BBB”作为字符串,它会数到3,但如果是“BABY”,它只会数到1。我会尽快接受你的回答。我避免无缘无故地投反对票,但是