Подсчитайте общее количество выбранных алфавитов в строке с функцией разделения в Js

#javascript

#javascript

Вопрос:

Я пытаюсь подсчитать общее количество p из любой строки в js.

мой js код:

 var sp = "pappa";
var as = sp.split("p");
console.log(as.length);
 

Но там написано вывод: 4 в консоли.

даже если я помещаю пустую строку внутрь sp , она показывает значение 1 . Почему он начинает отсчет с 1 ?

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

1. split разбивается на токен provides, чтобы получить массив. Если вы распечатаете этот массив, вы узнаете, почему он возвращает 4.

2. Он также возвращает несколько пустых строк. Попробуйте var as = sp.split("p").filter(a => !!a);

3. Может быть "pappa".split('').reduce((c,ch) => ch === 'p' ? c 1 : c, 0);

Ответ №1:

Поскольку Java script создает по крайней мере один пустой набор для каждой используемой вами функции разделения, поэтому, если вы хотите получить точное количество любого алфавита, вам нужно вычесть 1 из конечного значения.

Ответ №2:

Вывод правильный. Если разделитель in split() встречается в первой или последней позиции строки, возвращается пустая строка. В вашем случае для разделителя ‘p’ str.split('p') возвращает массив ["", "a", "", "a"] длиной 4.

Ответ №3:

как упоминал Кишор, split возвращает массив, вы можете сделать что-то подобное, чтобы добиться желаемого поведения:

 var sp = "pappa";
var as = sp.split("p");
var as2 = as.join("");
console.log(as2.length);
// number of "p"s
console.log(sp.length - as2.length);
 

Ответ №4:

просто поместите эти строки

     var sp = "pappa";
console.log((sp.match(/p/g)).length);