2013-11-25 167 views
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; 
}; 

回答

3

你有一些问题:

  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; 
}; 
+0

谢谢,即时通讯困惑雅导致即时新:)的问题。我将您的代码复制到Chrome控制台,但一定不能正确运行,因为我总是找回错误。我应该运行什么函数来查看console.log输出结果? – jstone

+0

@jstone你看到什么错误?它在我的控制台上运行良好。 –

+0

我输入'var letterInWord = function(letter,word){...};'并按回车键;结果是'undefined'(因为'var')。然后我输入'letterInWord('p','apple')',然后回车,结果是2. –

1
'apple'.match(/p/g).length // outputs 2 
换句话说

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

FIDDLE

+0

感谢的人物,虽然IM迷惑你只是做了你在我的代码中把它放到哪里去,或者是你放在控制台上运行的东西? – jstone

+0

这样做似乎更容易吗? – adeneo

+0

@jstone - 此答案中显示的单行功能完全取代了现有的九行功能。这是计算字母计数的另一种方法。 – nnnnnn

0

这里有一个小的功能,也可用于像$*(并且因为它是对字符串进行调用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
相关问题