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

Имеем массив [false, 2 'hello'] Надо с помощью reduce преобразовать в объект с полями {p1: false, p2: 2, p3: 'hello'}


Ответы (2 шт):

Автор решения: WVFFLIFE

const arr = [false, 2, 'hello'];

const res = arr.reduce((acc, current, index) => {
  const key = `p${index + 1}`;
  return {
    ...acc,
    [key]: current
  }
}, {});

console.log(res)

→ Ссылка
Автор решения: Stepan Kasyanenko

Разница с ответом @WVFFLIFE - не создаем на каждой итерации новый объект. Должно работать быстрее.

const arr = [false, 2, 'hello'];

const res = arr.reduce((acc, current, index) => {
  acc[`p${index + 1}`] = current;
  return acc;
}, {});

console.log(res)

Небольшой бенчмарк по производительности.

const arr = new Array(1000).fill(2);

console.time('Do not create');

const res = arr.reduce((acc, current, index) => {
  acc[`p${index + 1}`] = current;
  return acc;
}, {});
console.timeEnd('Do not create');


console.time('Create');
const res1 = arr.reduce((acc, current, index) => {
  const key = `p${index + 1}`;
  return {
    ...acc,
    [key]: current
  }
}, {});
console.timeEnd('Create');

→ Ссылка