У меня есть функция, которая принимает массив имен и возвращает новый массив, в котором первая буква каждого имени преобразуется в верхний регистр (а остальные буквы в нижний регистр).
function capMe(arr) {
let newArr = [];
arr.forEach(function(name) {
name = name.replace(name[0], name[0].toUpperCase());
for(let i = 1; i < name.length; i++) {
name = name.replace(name[i], name[i].toLowerCase());
}
newArr.push(name);
});
return newArr;
}
Это работает для подавляющего большинствавремя.Например, если я вызову функцию следующим образом:
console.log(capMe(['jACKSON', 'pAM', 'wiLliAm']));
, я получу желаемый результат: > Array ["Jackson", "Pam", "William"]
.
Однако есть один случай, когда эта функция не работает,Если я вызываю функцию с именем, в котором повторяется первая буква, каждая буква будет строчной, за исключением второго вхождения буквы.
Например, если я добавлю gEORGANN
к предыдущему примеру, яполучит этот вывод:
> Array ["georGann", "Jackson", "Pam", "William"]
Как мне решить эту проблему?