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