Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как преобразовать все значения объекта

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

Превратите объект в пары, измените значения через 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 — Создаёт новый массив, преобразуя каждый элемент.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.