Я работал над небольшим проектом, для которого требовался счетчик подстрок. Поиск неправильных фраз не дал мне никаких результатов, однако после написания собственной реализации я наткнулся на этот вопрос. Во всяком случае, вот мой путь, он, вероятно, медленнее, чем большинство здесь, но может быть полезным для кого-то:
function count_letters() {
var counter = 0;
for (var i = 0; i < input.length; i++) {
var index_of_sub = input.indexOf(input_letter, i);
if (index_of_sub > -1) {
counter++;
i = index_of_sub;
}
}
http://jsfiddle.net/5ZzHt/1/
Пожалуйста, дайте мне знать, если вы обнаружите, что эта реализация не работает или не соответствует некоторым стандартам! :)
UPDATE
Вы можете заменить:
for (var i = 0; i < input.length; i++) {
С:
for (var i = 0, input_length = input.length; i < input_length; i++) {
Интересно почитать, обсуждая вышесказанное:
http://www.erichynds.com/blog/javascript-length-property-is-a-stored-value