Подсчитать количество определенных букв в строке методом reduce

Уважаемые форумчане. Помогите исправить ошибку в коде. Ошибка, мне кажется, в цикле if, когда он находит вторую 'а' идет ошибка в просчете

let getValue = (string, letter) => {
    count = 0;
    let arr = [];
    arr = string.split('').reduce((count, elem) => {
        console.log(elem, letter)
        if (elem === letter) {
            count++;
            console.log(count)
        }
    }, 0)
    return count
}

console.log(getValue('abcabca', 'a'));

Ответы (1 шт):

Автор решения: wololo

У вас есть две переменных с именем count. Одна объявлена внутри getValue:

count = 0;

А другая — параметр стрелочной функции внутри reduce:

.reduce((count, elem) => ...

Второй count не имеет никакого отношения к первому. Внутри стрелочной функции вы наращиваете count, но это не та переменная, которую вы пытаетесь изменить.

Перепишите так:

let getValue = (string, letter) => {
    let count = 0;
    string.split('').reduce((arg1, elem) => count += elem === letter, 0);
    return count;
};
console.log(getValue('abcabca', 'a'));

А ещё лучше так:

let getValue = (string, letter) => {
    return string.split('').reduce((count, elem) => count += elem === letter, 0);
};
console.log(getValue('abcabca', 'a'));

→ Ссылка