Answer

Answer

t.me/js_test

Ответ:

function duplicateCount(text) {
    const duplicates = [];

    return text
        .toLowerCase()
        .split("")
        .reduce((acc, cur, index, arr) => {
            if (arr.includes(cur, ++index) && !duplicates.includes(cur)) {
                duplicates.push(cur);
                return ++acc;
            }
            return acc;
        }, 0);
}

Обьяснение:

Создаём массив куда будем класть дубликаты позднее. Затем приводим входящую строку к нижнему регистру и разбиваем её на массив. Ну и в методе reduce происходит всё самое интересное. В первое значение аккумулятора ставим ноль, внутри функции всего одно условие (проверяем есть ли дубликат текущего значения в текущем массиве и если есть то проверяем не считали ли мы уже такое значение), если условие проходит то увеличиваем значение аккумулятора на один, в противном случае возвращаем аккумулятор как есть.

Код для проверки:

function duplicateCount(text) {
    const duplicates = [];

    return text
        .toLowerCase()
        .split("")
        .reduce((acc, cur, index, arr) => {
            if (arr.includes(cur, ++index) && !duplicates.includes(cur)) {
                duplicates.push(cur);
                return ++acc;
            }
            return acc;
        }, 0);
}

console.log(duplicateCount("abcde")); // 0
console.log(duplicateCount("aabBcde")); // 2
console.log(duplicateCount("Indivisibility")); // 1
console.log(duplicateCount("Indivisibilities")); // 2

Report Page