Tengo la siguiente matriz:
const people = [ "JoHn", "ChrISTiana", "anThoNY", "MARia", "jaMeS", "MIChaEl", "jeNNIFeR" ];Quiero poner en mayúscula la primera letra de cada palabra y minúsculas el resto.
He usado la siguiente función para generar una nueva matriz:
let capitaliseNames = (arr) => { return arr.map((item) => item[0].toUpperCase() + item.slice(1).toLowerCase()); };Pero, ¿cómo muto la matriz original? Probé el mismo enfoque pero usando forEach y no parece funcionar.
Esto hará el trabajo
let capitaliseNames = (arr) => { arr.forEach((elem, i) => { arr[i] = elem[0].toUpperCase() + elem.slice(1).toLowerCase() }); };Primero: toLowerCase() , luego puede usar una función personalizada para la mutación de la primera letra.
ACTUALIZAR Use un ciclo donde puede manipular la matriz original. Por ejemplo, un bucle for.
const people = ["JoHn", "ChrISTiana", "anThoNY", "MARia", "jaMeS", "MIChaEl", "jeNNIFeR"]; for(let i = 0; i < people.length; i++) { people[i] = capitalizeFirstLetter( people[i].toLowerCase() ) ; } function capitalizeFirstLetter(str) { return str[0].toUpperCase() + str.slice(1); } console.log(people)Use forEach() en lugar de map() y reasigne el valor mutado a la matriz original:
const people = ["JoHn", "ChrISTiana", "anThoNY", "MARia", "jaMeS", "MIChaEl", "jeNNIFeR"]; const capitaliseNames = (arr) => arr.forEach( (v, i, a) => a[i] = v[0].toUpperCase() + v.slice(1).toLowerCase() ); capitaliseNames(people); console.log(people);