2

我对 JavaScript 很陌生,我试图弄清楚如何计算一个字母在一个单词中出现的次数。'p'例如,出现了多少次'apple'

这是我到目前为止所写的内容,但我无法弄清楚我哪里出错了。

var letterInWord = function (letter, word) {
  var letter = 0;
  var word = 0;
  for (var i = 0; i < letter.charAt; i+= 1) {
    if (letter.charAt(i) === " " = true) {
        letter++;
        console.log('The letter `letter` occurs in `word` 1 time.');
    } 
  }
  return letter;
};
4

3 回答 3

4

你有很多问题:

  1. 您正在重用参数名称作为局部变量名称。使用不同的标识符来跟踪函数中的每一位信息。
  2. letter.charAt是未定义的,如果letter是一个数字,如果letter是一个字符串是一个函数。无论哪种方式,i < letter.charAt都没有任何意义。
  3. 如果您正在寻找letterword为什么要查看letter.charAt(i)?你可能想要word.charAt(i).
  4. " " = true完全没有意义。

也许你的意思是这样的?

var letterInWord = function (letter, word) {
  var count = 0;
  for (var i = 0; i < word.length; i++) {
    if (word.charAt(i) === letter) {
        count++;
    } 
  }
  return count;
};
于 2013-11-25T23:27:01.230 回答
1
'apple'.match(/p/g).length // outputs 2

换句话说:

var letterInWord = function (letter, word) {
  return (word.match( new RegExp(letter, 'g') ) || []).length;
};

小提琴

于 2013-11-25T23:26:28.793 回答
0

这是一个较小的函数,它也适用于像$or之类的字符*(因为它调用length的是字符串,所以不需要使用|| []

'apple'.replace(/[^p]/g,'').length // outputs 2

function charcount(c, str) {
  return str.replace(new RegExp('[^'+c+']','g'),'').length
}

console.log = function(x) { document.write(x + "<br />"); };
console.log( "'*' in '4*5*6' = " + charcount('*', '4*5*6') ) // outputs 2
console.log( "'p' in 'pineapples' = " + charcount('p', 'pineapples') )// outputs 3
于 2016-06-16T19:09:55.257 回答