Результат преобразования массива в объект зависит от того, как выглядит исходный массив и от того, что мы хотим получить на выходе. Решить проблему можно либо перебором массива, либо используя специальные методы.

Рассмотрим случаи, когда из массива необходимо получить объект, и способы их реализации.

Object.assign()

Метод Object.assign() был представлен стандартом ES6. Суть его заключается в том, что он копирует значения свойств из одного или нескольких исходных объектов в целевой. Целевой объект укажем пустым, а значения свойств будут браться из массива. Поскольку самих свойств в массиве нет, они будут заменены порядковыми номерами элементов.

const names = ['Иван', 'Олег', 'Петр', 'Глеб'];
const obj = Object.assign({}, names);  // {0: 'Иван', 1: 'Олег', 2: 'Петр', 3: 'Глеб'}

Спред-оператор (...)

Суть этого оператора похожа на вышеописанный метод Object.assign(). В новый объект скопируются значения массива, свойствами которых будут их индексы.

const names = ['Иван', 'Олег', 'Петр', 'Глеб'];
const obj = {...names};  // {0: 'Иван', 1: 'Олег', 2: 'Петр', 3: 'Глеб'}

Цикл for

Более простым и обычным способом преобразования массива в объект будет использование цикла for, в котором каждая итерация будет расширять объект.

const names = ['Иван', 'Олег', 'Петр', 'Глеб'];
const obj = {};

for (let i = 0; i < names.length; i++) {
  obj[i] = names[i];
}
console.log(obj);  // => {0: 'Иван', 1: 'Олег', 2: 'Петр', 3: 'Глеб'}

reduce()

Метод reduce() применяется для перебора массива и совершения операций с его элементами. Передавая ему объект в качестве первого параметра, мы можем на каждой итерации расширять объект очередной парой ключ-значение и возвращать его.

const names = ['Иван', 'Олег', 'Петр', 'Глеб'];
const obj = names.reduce((object, value, index) => {
  return {...object, [index]: value};
}, {});

console.log(obj);  // => {0: 'Иван', 1: 'Олег', 2: 'Петр', 3: 'Глеб'}

Object.fromEntries

Этот метод может обрабатывать массив немного другого формата, создавая объект с ключами и их значениями согласно данным массива. Каждый элемент массива должен быть массивом из двух элементов, которые и преобразуются в пару ключ-значение.

const names = [
  ['name', 'Иван'],
  ['age', 35],
  ['city', 'Сидней'],
];
const obj = Object.fromEntries(names);

console.log(obj);  // => {name: 'Иван', age: 35, city: 'Сидней'}