Почему стандартный map изменяет исходный массив а не возвращает новый?

Пример кода:

let updatedSchools = [
    {name: 'New Gen', country: 'Spain'},
    {name: 'Stanford', country: 'USA'},
    {name: 'Gymnasium Achern', country: 'Germany'}
];

const update = updatedSchools.map((s) => {
    if (s.name === 'New Gen') {
        s.country = "new";
    }

    return s;
});

console.log(updatedSchools);


Почему, если вывести исходный массив updatedSchools в нем также присутствует измененное поле s.country = "new"; так же как и у нового вернувшего массива update.

Почему меняется исходный массив?
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Дело не в map. А в том, что вы изменяете объекты ввнутри массива.

Объекты в JS всегда передаётся по ссылке.
https://learn.javascript.ru/object-copy
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Artezio Санкт-Петербург
от 160 000 до 220 000 ₽