Array.prototype.groupBy v JavaScriptu

Array.prototype.groupBy byl nedávno povýšen do 3. fáze.

Vzhledem k tomu, že se jedná o novou funkci, která ještě není podporována v prohlížečích, pokud ji chcete vyzkoušet ještě dnes, můžete použít SkyPack k poskytnutí polyfill.

import 'https://cdn.skypack.dev/core-js/actual/array/group-by';

V tomto prvním příkladu seskupuji jména podle jejich prvního písmene, abecedně.

const namesArray = ['Heidi', 'Barry', 'Oliver', 'Williams', 'Willis', 'Werther', 'Wallis'];
const groupedNames = namesArray.groupBy(name => name[0].toUppercase());
console.log(groupedNames);

Toto by se zaprotokolovalo:

{
    "H": [
        "Heidi"
    ],
    "B": [
        "Barry"
    ],
    "O": [
        "Oliver"
    ],
    "W": [
        "Williams",
        "Willis",
        "Werther",
        "Wallis"
    ]
}

Zde je příklad seskupení lichých a sudých čísel:

const numbers = [1,2,3,4,5,6];
numbers.groupBy(number => number % 2 === 0 ? 'even' : 'odd');

Zde je příklad seskupení řetězců emodži a jiných řetězců:

const strings ['hi', 'bye', 'Merry Christmas', '✨', '🐶'];
const groupedByIsEmoji = strings.groupBy(string => /\p{Extended_Pictographic}/u.test(string) ? 'Emoji' : 'Non-Emoji');

Zde je příklad, který bere pole filmových objektů a seskupuje objekty podle vlastnosti year:

  const films = [{
      name: 'The Terminator',
      year: 1984
  }, {
      name: 'Blade Runner',
      year: 1982
  }, {
      name: 'Red Dawn',
      year: 1984
  }, {
      name: 'The Wrath of Khan',
      year: 1982
  }];

  const groupedByYear = films.groupBy(film => film.year);