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

Рейтинг: 0Ответов: 1Опубликовано: 21.04.2023

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

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

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

Ответы

▲ 2Принят

уместить эти 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), {});