Некоторое время назад я нашел отличный ответ на вопрос и не могу вспомнить, что это было - во всяком случае, спасибо этому человеку за эту замечательную групповую функцию:
const groupBy = (xs, key) => {
return xs.reduce(function(rv, x) {
(rv[x[key]] = rv[x[key]] || []).push(x);
return rv;
}, {});
};
Какой самый простой способ? реализовать так, чтобы - если group.length> 3, группа разбита на две или более групп?
Я хочу сделать что-то вроде этого, но возвращая 2 значения вместо одного, плюс, возможно, срез изменение длины исходного массива, кажется, расстраивает это.
const groupBy = (xs, key) => {
return xs.reduce(function(rv, x) {
(rv[x[key]] = rv[x[key]] || []).push(x);
if (rv[x[key]].length < 4) {
return rv;
} else {
return rv[x[key]].slice(3), rv[x[key]].slice(4, rv[x[key]].length)
}
}, {});
};