Сократить написание объявления объекта через массив и .map

В общем, вроде простая задача - уместить эти 2 строчки в одну:

let pairs = {};
Array.from(str.matchAll(regexp)).map(val => pairs[val.index + 1] = val[0]);

Но решение я так найти и не смог. Вкратце, код создаёт объект на основе массива используя .map, но при этом объявляет пустой объект, чего нужно избежать... Буду очень благодарен если кто-нибудь с этим поможет


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

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

уместить эти 2 строчки в одну

Заменить map на reduce...

let pairs = Array.from(str.matchAll(regexp)).reduce((o, val) => (o[val.index + 1] = val[0], o), {});

Еще вот так сократить можно...

let pairs = [...str.matchAll(regexp)].reduce((o, val) => (o[val.index + 1] = val[0], o), {});
→ Ссылка