Всегда получаю результат 0 при подсчете шаблонов в строке

#javascript

#javascript

Вопрос:

Я продолжаю получать результат 0 всякий раз, когда я ввожу поисковый запрос. Я пытаюсь найти количество раз, когда шаблон встречается в строке. Так, например, поиск at вернул бы 3. Любой совет о том, куда я собираюсь обратиться?

 string =
[
"cat math path"
]

    var pattern = prompt('Please enter a search term:'); 

        function check(string,pattern)
        {

            if(pattern) 
            {
                if(pattern.indexOf(string) == -1) 
                {
                return 0;
                }

                return count(pattern.substring(pattern.indexOf(string) string.length), string) 1;
            }

            else 
            {
                return("Nothing entered!");
            }
        }

        alert(check(string,pattern));
  

Комментарии:

1. 2 проблемы, которые я вижу сразу: вы определяете string как массив с [] . Тогда у вас есть indexOf обратное. Вы должны делать string.indexOf(pattern) , так как это шаблон, который вы хотите найти в строке.

2. Кроме того, JavaScript не имеет собственного count() . Вы используете какую-то другую библиотеку?

Ответ №1:

 if(pattern.indexOf(string) == -1)
  

должно быть

 if(string.indexOf(pattern) == -1)
  

Ответ №2:

Я думаю, вы перевернули использование pattern and string . Смотрите Документацию indexOf . Также вы можете легко подсчитать вхождения, с split помощью которых ваша строка разбивается на массив:

count=string.split(pattern).length - 1;

Где string="cat math path"; (вместо массива)