Помогите решить задачу 'Считаем бобы'

Рейтинг: -1Ответов: 2Опубликовано: 21.03.2023

Помогите решить задачу "считаем бобы".

Напишите функцию 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

Ответы

▲ 0Принят

Можно решить с помощью reduce. Алгоритм решения будет такой:

  1. Сперва разбиваем нашу строку на массив символов через метод .split().
  2. Reduce проходит по каждому элементу в массиве символов. Если он равен входящему символу (к), то возвращаем результат с добавлением 1. Если нет, то просто возвращаем предыдущий результат. Изначально наш результат = 0 (объявлен в конце метода reduce)

function countChar(str = '', ch = '') {
  return str.split('').reduce((acc, char) => ch === char ? ++acc : acc, 0);
}

console.log(countChar('Аккумулятор', 'к'));

▲ 0
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('Аккумулятор', 'к'));