Как преобразовать все значения объекта
Короткий ответ
Превратите объект в пары, измените значения через map() и соберите новый объект:
const prices = { tea: 3, coffee: 4, cake: 5 };
const doubled = Object.fromEntries(Object.entries(prices).map(([name, price]) => [name, price * 2]));
console.log(JSON.stringify(doubled));Результат:
{"tea":6,"coffee":8,"cake":10}Изменение ключей
Так же можно менять ключи, например сделать их заглавными:
const env = { host: 'localhost', port: 8080 };
const upper = Object.fromEntries(Object.entries(env).map(([key, value]) => [key.toUpperCase(), value]));
console.log(JSON.stringify(upper));Результат:
{"HOST":"localhost","PORT":8080}Частая ошибка
У объектов нет метода map(), он есть у массивов:
try {
({ a: 1 }).map((x) => x);
} catch (error) {
console.log(error.constructor.name);
}Результат:
TypeErrorФункции из этого ответа
- Object.entries — Возвращает массив пар «имя свойства и значение».
- Object.fromEntries — Создаёт объект из списка пар ключ — значение.
- Array.prototype.map — Создаёт новый массив, преобразуя каждый элемент.