> Вернёт ли метод map в JavaScript новый массив с новыми объектами или с теми же старыми объектами при добавлении свойства к объектам? (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Домклик

Стек: JavaScript

> Пример ответа

Метод map всегда возвращает новый массив, но что касается объектов внутри - он не создаёт новые объекты, а возвращает те же самые ссылки на исходные объекты, если вы не создаёте новые объекты в коллбэке.

Пример:

JAVASCRIPT
const 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 - исходный объект изменился

Если нужно получить новые объекты (чтобы не мутировать исходные), необходимо явно создать копию:

JAVASCRIPT
const newUsers = users.map(user => ({ ...user, age: 30 }));
console.log(users[0] === newUsers[0]); // false - разные объекты

Таким образом, map гарантирует новый массив, но не гарантирует новые объекты внутри - всё зависит от реализации коллбэка.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью