【发布时间】:2019-03-04 21:40:04
【问题描述】:
我有一个函数,它接受一个名称数组并返回一个新数组,每个名称的第一个字母转换为大写(其余字母小写)。
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"]
我该如何解决这个问题?
【问题讨论】:
标签: javascript arrays string replace