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