Encodera

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

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

Как преобразовать массив в объект

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

Object.fromEntries() строит объект из массива пар ключ-значение:

const pairs = [['name', 'Anna'], ['age', 30]];
 
console.log(Object.fromEntries(pairs));

Результат:

{
  "name": "Anna",
  "age": 30
}

Индекс по id

Чтобы быстро находить объекты по id, сделайте объект, где ключ — id:

const users = [
  { id: 7, name: 'Anna' },
  { id: 9, name: 'Oleg' },
];
const byId = Object.fromEntries(users.map((user) => [user.id, user]));
 
console.log(byId[9].name);

Результат:

Oleg

Два массива: ключи и значения

Соедините элементы двух массивов по индексу:

const keys = ['red', 'green', 'blue'];
const values = ['#f00', '#0f0', '#00f'];
const colors = Object.fromEntries(keys.map((key, i) => [key, values[i]]));
 
console.log(JSON.stringify(colors));

Результат:

{"red":"#f00","green":"#0f0","blue":"#00f"}

Частая ошибка

Оператор расширения превращает массив в объект с числовыми ключами — редко то, что нужно:

console.log(JSON.stringify({ ...['a', 'b'] }));

Результат:

{"0":"a","1":"b"}

Функции из этого ответа

  • Object.fromEntries — Создаёт объект из списка пар ключ — значение.
  • Array.prototype.reduce — Сводит массив к одному значению.
  • Array.prototype.map — Создаёт новый массив, преобразуя каждый элемент.

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

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