groupBy.js 477 B

1234567891011121314151617181920212223242526
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', {
  3. value: true,
  4. });
  5. exports.groupBy = groupBy;
  6. /**
  7. * Groups array items into a Map, given a function to produce grouping key.
  8. */
  9. function groupBy(list, keyFn) {
  10. const result = new Map();
  11. for (const item of list) {
  12. const key = keyFn(item);
  13. const group = result.get(key);
  14. if (group === undefined) {
  15. result.set(key, [item]);
  16. } else {
  17. group.push(item);
  18. }
  19. }
  20. return result;
  21. }