Group By с максимальным размером группы - PullRequest
0 голосов
/ 09 апреля 2020

Некоторое время назад я нашел отличный ответ на вопрос и не могу вспомнить, что это было - во всяком случае, спасибо этому человеку за эту замечательную групповую функцию:

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)
          }
        }, {});
      };
...