поиск по паттерну

118
19 февраля 2021, 13:00
function countBs(str) {
    let result = str.match( /b/gi );
    return result
}
let a = "pobeda pobeda vmesto obeda"
console.log( countBs(a) )

Выводит [b,b,b],но как result сделать числом? Проще говоря нужно что-бы получилось кол-во букв b

Answer 1
return result
return result ? result.length : 0
Answer 2

match() ищет совпадения и возвращает массив... через length можно посчитать колчество элементов этого массива. Но если совпадений не будет и ничего не вернет - будет ошибка, Поэтому рядом добавлен ИЛИ пустой массив || [] — в случае ноль совпадений, посчитает кол-во элементов пустого массива, = 0.

function countBs(str) { 
  return ( str.match( /b/gi ) || [] ).length; 
} 
 
let a = "pobeda pobeda vmesto obeda" 
 
console.log( countBs(a) );

Можно сделать более универсальный сочик:

function count(str, pattern) { 
  let reg = new RegExp( pattern, "gi" ); 
  return ( str.match( reg ) || [] ).length; 
} 
 
let a = "pobeda pobeda vmesto obeda" 
 
console.log( count(a, 'a') ); 
console.log( count(a, 'po') ); 
console.log( count(a, 'bubu') );

READ ALSO
Как переделать forEach на цикл for в сложном коде? [закрыт]

Как переделать forEach на цикл for в сложном коде? [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

159
Как вывести на печать таблицу со стилями

Как вывести на печать таблицу со стилями

Мне нужно распечатать таблицу которая выглядит вот так:

145
Координаты элемента в окне

Координаты элемента в окне

Можно ли как-нибудь получить координаты элемента относительно окна кроме getBoundingClientRect? Без JQuery

157
Скрытие класса при нажатии на кнопку

Скрытие класса при нажатии на кнопку

Почему при активации всплывающего окна изображение лежит поверх формы обратного звонка? Как сделать, чтобы слои были упорядочены? При нажатии...

137