Функция duplicateCount
Ответ:
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