Как изменить каждое значение объекта без мутации оригинала?

Переберите Object.entries, преобразуйте пары и соберите новый объект через Object.fromEntries. Результат — {anna: 3, boris: 5}, а scores остаётся прежним.

Короткий ответ

Что ответить на собеседовании

Переберите Object.entries, преобразуйте пары и соберите новый объект через Object.fromEntries. Результат — {anna: 3, boris: 5}, а scores остаётся прежним.

Подробный разбор

Ответ с пояснениями

Условие

Дан объект const scores = {anna: 2, boris: 4};. Нужно получить новый объект с теми же собственными перечисляемыми строковыми ключами, увеличив каждое числовое значение на 1. Исходный объект менять нельзя. Символьных ключей и вложенных объектов нет.

Ответ

Переберите Object.entries, преобразуйте пары и соберите новый объект через Object.fromEntries. Результат — {anna: 3, boris: 5}, а scores остаётся прежним.

const next = Object.fromEntries(
  Object.entries(scores).map(([name, score]) => [name, score + 1])
);

Object.values подошёл бы только для получения массива значений: связь с ключами потерялась бы. Здесь создаётся новый верхний уровень, но это не универсальное глубокое копирование. Ограничения на ключи и тип значений являются частью контракта задачи.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее