Как используя forEach изменить имена в массиве, чтоб начинались с большой буквы?

const names = ['vLadiMir', 'maRk', 'LoGAn', 'VicTOr', 'mAks', 'KaTe', 'alEx'];

names.forEach((item) => {
  item = item[0].toUpperCase() + item.slice(1).toLowerCase();
});

console.log(names);

Нужно используя именно метод forEach изменить имена в массиве, чтоб начинались с большой буквы, а остальные были в нижнем регистре, но не пойму почему это не срабатывает?


Ответы (1 шт):

Автор решения: Алексей Шиманский

Потому что метод forEach работает внутри как итератор. Изначально он своё локальное хранилище (в свойство класса) заносит массив, а потом производит итерирование по массиву из этого внутреннего свойства, по сути, копии массива. Поэтому основной не меняется.

Есть примерно аналогичный вопрос-ответ Не заполняется массив с помощью упрощённого цикла Java

только там Java, но суть та же


Если нужно через forEach:

const names = ['vLadiMir', 'maRk', 'LoGAn', 'VicTOr', 'mAks', 'KaTe', 'alEx'];

names.forEach((item, i) => {
  names[i] = item[0].toUpperCase() + item.slice(1).toLowerCase();
});

console.log(names);

→ Ссылка