> Вернёт ли метод map в JavaScript новый массив с новыми объектами или с теми же старыми объектами при добавлении свойства к объектам? (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Домклик
Стек: JavaScript
> Пример ответа
Метод map всегда возвращает новый массив, но что касается объектов внутри - он не создаёт новые объекты, а возвращает те же самые ссылки на исходные объекты, если вы не создаёте новые объекты в коллбэке.
Пример:
JAVASCRIPTconst users = [{ name: 'Alice' }, { name: 'Bob' }];const modified = users.map(user => {user.age = 30; // мутируем исходный объектreturn user; // возвращаем ту же ссылку});console.log(users[0] === modified[0]); // true - это один и тот же объектconsole.log(users[0].age); // 30 - исходный объект изменился
Если нужно получить новые объекты (чтобы не мутировать исходные), необходимо явно создать копию:
JAVASCRIPTconst newUsers = users.map(user => ({ ...user, age: 30 }));console.log(users[0] === newUsers[0]); // false - разные объекты
Таким образом, map гарантирует новый массив, но не гарантирует новые объекты внутри - всё зависит от реализации коллбэка.
> Похожие задачи по frontend
В чем разница между стрелочной и обычной функцией в контексте this в JavaScript?
Как определить, что элемент находится в viewport в JavaScript
В чем разница XML и JSON
Что такое генераторы в JavaScript и для чего они используются
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью