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);