Вы можете уменьшить массив до объекта (обратите внимание, что SO печатает консоль немного странно, нажмите F12 и проверьте консоль для фактического результата):
const data = [{"value":"OtherLawyer","label":"Other Lawyer","types":["Fax","Email","Call","Text"]},{"value":"OtherClerk","label":"Other Clerk","types":["Fax","Email","Call","Text"]},{"value":"BrokerageAgent","label":"Brokerage Agent","types":["Fax","Email","Call","Text"]},{"value":"Lawyer","label":"Lawyer","types":["Email","Call","Text"]},{"value":"Clerk","label":"Clerk","types":["Email","Call","Text"]},{"value":"Client","label":"Client","types":["Email","Call","Text"]},{"value":"ListingAgent","label":"Listing Agent","types":["Email","Call","Text"]},{"value":"CooperatingAgent","label":"Cooperating Agent","types":["Email","Call","Text"]}];
const groupByType = (data) =>
data.reduce(
(result, { types, ...rest }) =>
types.reduce((result, type) => {
result[type] = result[type] || [];
result[type].push(rest);
return result;
}, result),
{},
);
console.log(groupByType(data));
Array.prototype.map используется для преобразования массива 'T в массив' U или даже для создания нового массива того жетип, но удвоенный (например, [1,2,3].map(x=>x*2)
).Функция, передаваемая в map, должна быть чистой функцией, поэтому она не должна использовать или изменять что-то определенное вне функции или изменять отображаемый массив.