Вы можете сгруппировать элементы с помощью Map
, а затем построить новый объект для набора результатов.
var array = [{ value: "1", key: "abc" }, { value: "2", key: "abc" }, { value: "3", key: "def" }],
grouped = Array.from(
array.reduce((m, { key, value }) => m.set(key, [...(m.get(key) || []), value]), new Map),
([key, value]) => ({ key, value })
);
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }