Heim > Web-Frontend > js-Tutorial > Hauptteil

#LearnedToday: Object.groupBy()

PHPz
Freigeben: 2024-08-26 21:39:08
Original
887 Leute haben es durchsucht

#LearnedToday: Object.groupBy()

? Endlich ist es draußen! Sie müssen keinen hässlichen Code mehr schreiben, um ein Array von Objekten nach einem bestimmten Wert eines Felds zu gruppieren!

Seit Ende 2023 gibt es eine offizielle statische Methode für Object namens groupBy(), die das für uns erledigt!
Es akzeptiert ein Iterable, beispielsweise ein Array, und eine Funktion, die für jedes Element ausgeführt wird und die „Kategorie“ dieses bestimmten Elements zurückgeben muss.
Die Methode gibt ein neues Objekt zurück, wobei jeder Schlüssel einer anderen Kategorie entspricht, die ein Array von Objekten enthält, die zu dieser bestimmten Kategorie gehören.

HINWEIS: Die Elemente im zurückgegebenen Objekt und im ursprünglichen Iterable sind identisch (keine tiefen Kopien!). Die Änderung der internen Struktur der Elemente wird sich sowohl im ursprünglichen iterierbaren als auch im zurückgegebenen Objekt widerspiegeln.

Beispiel

Lassen Sie uns ein praktisches Beispiel geben, um zu sehen, wie einfach es ist, alle Ninja Turtles-Charaktere nach Alter zu gruppieren.

Das anfängliche Array

const ninjaTurtlesCharacters = [
  { age: 16, name: 'Michelangelo' },
  { age: 16, name: 'Raffaello' },
  { age: 16, name: 'Donatello' },
  { age: 16, name: 'Leonardo' },
  { age: 91, name: 'Splinter' },
  { age: 25, name: 'Casey Jones' },
  { age: 25, name: 'April O\'Neil' }
];
Nach dem Login kopieren

Der gute ALTE Weg (mit Reduzieren)

const ninjaTurtlesCharactersByAge = ninjaTurtlesCharacters.reduce(
  (groupedPeople, item) => ({
    ...groupedPeople,
    [item.age]: groupedPeople[item.age]
      ? [...groupedPeople[item.age], item]
      : [item],
  }),
  {}
);
Nach dem Login kopieren

Der MODERNE Weg

const ninjaTurtlesCharactersByAgeNew = Object.groupBy(
  ninjaTurtlesCharacters,
  ({ age }) => age
);
Nach dem Login kopieren

Tipp: Verwenden Sie Map.groupBy(), wenn Sie eine Karte anstelle eines Objekts zurückgeben möchten

Das Ergebnis

{
  "16": [
    { age: 16, name: 'Michelangelo' },
    { age: 16, name: 'Raffaello' },
    { age: 16, name: 'Donatello' },
    { age: 16, name: 'Leonardo' }
  ],
  "25": [
    { age: 25, name: 'Casey Jones' },
    { age: 25, name: 'April O\'Neil' }
  ],
  "91": [
    { age: 91, name: 'Splinter' }
  ]
}
Nach dem Login kopieren

Demo

???‍? Wie üblich habe ich ein einfaches Stackblitz-Projekt erstellt, um mit dem Code zu spielen.

? Dokumente: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/groupBy

ℹ Browser-Unterstützung: https://caniuse.com/mdn-javascript_builtins_object_groupby

Das obige ist der detaillierte Inhalt von#LearnedToday: Object.groupBy(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage