Как с помощью 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');