Вы можете взять объект в качестве хеш-таблицы для rank
, добавить части к определенному рангу и получить массив значений из объекта в качестве результата.
var data = [{ group: 'A', rank: 1, value: 200 }, { group: 'B', rank: 2, value: 200 }, { group: 'C', rank: 3, value: 200 }, { group: 'D', rank: 3, value: 500 }, { group: 'E', rank: 3, value: 600 }, { group: 'F', rank: 3, value: 400 }, { group: 'G', rank: 4, value: 100 }, { group: 'H', rank: 4, value: 300 }],
result = Object.values(data.reduce((r, { rank, value }) => {
r[rank] = r[rank] || { rank, total: 0, totalRows: 0 };
r[rank].total += value;
r[rank].totalRows++;
return r;
}, {}));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }