Помогите решить задачу 'Считаем бобы'
Помогите решить задачу "считаем бобы".
Напишите функцию countBs, которая принимает строку в качестве аргумента, и возвращает количество символов “B”, содержащихся в строке. Затем напишите функцию countChar, которая работает примерно как countBs, только принимает второй параметр — символ, который мы будем искать в строке (вместо того, чтобы просто считать количество символов “B”). Для этого переделайте функцию countBs.
function countBs(string) {
function countChar(ch) {
let result = 0;
for (let i = 0; i < string.length; i++) {
if(string[i] == ch) {
result++;
}
return result;
}
}
countChar('к');
}
console.log(countBs('Аккумулятор'));
выдает undefined. Объясните, что я не правильно написал, и почему.
#UPD
Прочитал условия задачи, переписал код, получилось вот так:
function countChar(string = '', ch = '') {
let counter = 0;
for (let i = 0; i < string.length; i++) {
if (string.charAt(i) == ch) {
counter++;
}
return counter;
}
}
console.log(countChar('Аккумулятор', 'к'));
выдает просто 0
Ответы (2 шт):
Автор решения: iewher
→ Ссылка
function countChar(string = '', ch = '') {
let counter = 0;
for (let i = 0; i < string.length; i++) {
if (string.charAt(i) == ch) {
counter++;
}
}
return counter;
}
console.log(countChar('Аккумулятор', 'к'));
Автор решения: Sergey Glazirin
→ Ссылка
Можно решить с помощью reduce. Алгоритм решения будет такой:
- Сперва разбиваем нашу строку на массив символов через метод .split().
- Reduce проходит по каждому элементу в массиве символов. Если он равен входящему символу (к), то возвращаем результат с добавлением 1. Если нет, то просто возвращаем предыдущий результат. Изначально наш результат = 0 (объявлен в конце метода reduce)
function countChar(str = '', ch = '') {
return str.split('').reduce((acc, char) => ch === char ? ++acc : acc, 0);
}
console.log(countChar('Аккумулятор', 'к'));