#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);