Переберите 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 подошёл бы только для получения массива значений: связь с ключами потерялась бы. Здесь создаётся новый верхний уровень, но это не универсальное глубокое копирование. Ограничения на ключи и тип значений являются частью контракта задачи.