DefinitionDie Methode „reduce()“ führt eine Reduzierungsfunktion aus, die Sie für jedes Element im Array bereitstellen (in aufsteigender Reihenfolge), und fasst die Ergebnisse in einem einzigen Rückgabewert zusammen. reduce() durchläuft wie forEach(), map() und filter() auch jedes Element im Array, aber reduce() kann mit dem aktuell durchlaufenen Element auf dem Ergebnis des zuvor durchlaufenen Array-Elements operieren. Grammatikarray.reduce(Funktion(vorherige, aktuelle, Index, Array){ ... }, init); Parameter in der Callback-Funktion:
Gemeinsame Parameter: prev und cur Hinweis: Wenn die Rückruffunktion zum ersten Mal ausgeführt wird, gibt es zwei Fälle für die Werte von prev und cur: Wenn beim Aufruf von reduce() der Anfangswert init angegeben wird, übernimmt prev den Anfangswert und cur den ersten Wert im Array und der Index beginnt bei 0; wenn der Anfangswert init nicht angegeben wird, übernimmt prev den ersten Wert im Array und cur den zweiten Wert im Array und der Index beginnt bei 1. Beispiele1. Es wird kein Anfangswert init übergebenconst arr = [1, 3, 5, 7] arr.reduce(Funktion(vorherige, aktuell, Index, arr){ console.log(vorherige, aktuell, index) Zurück Vorherige + Aktuelle }) Die Parameter und Rückgabewerte für jeden Aufruf sind wie folgt:
Da kein Anfangswert übergeben wird, beginnt der Index bei 1. Der Rückruf wird dreimal aufgerufen. Zu Beginn ist der Wert von prev 1, das erste Element im Array, und der Wert von cur ist 3. Nach der Addition wird der Rückgabewert 4 als prev-Wert der nächsten Rückrufrunde verwendet. Anschließend wird die nächste Rückrufrunde fortgesetzt, bis sie abgeschlossen und zurückgegeben wird. 2. Bei der Übergabe des Anfangswertesconst arr = [1, 3, 5, 7] arr.reduce(Funktion(vorherige, aktuell, Index, arr){ console.log(vorherige, aktuell, index) Zurück Vorherige + Aktuelle }, 10) Die Parameter und Rückgabewerte für jeden Aufruf sind wie folgt:
3. Array-Deduplizierungconst arr = ['ab', 'v', 'd', 'ab', 'h', 'e', 'dc', 'e', 'e', 'f'] const newArr = arr.reduce(Funktion(vorherige, aktuelle){ !vorherige.includes(aktuell) && vorherige.push(aktuell) Zurück Zurück }, []) console.log(newArr) // ["ab", "v", "d", "h", "e", "dc", "f"] Die durchzuführenden Schritte sind wie folgt:
4. Verwenden Sie „Reduce“, um Object-Objekte in einem Array zu gruppieren und zusammenzuführen//Holen Sie sich das Objekt-Array aus dem Hintergrund, gruppieren Sie es nach Objekttyp und fügen Sie es zu einem Baum zusammen, um die Daten anzuzeigen const dataArr = [ { Typ: 'Governance-Ebene', Name: 'hive_82', Reserve: '2', ID: 1 }, { Typ: 'Ursprüngliche Datenebene', Name: 'qwe', Reserve: '1', ID: 2 }, { Typ: 'Quellebene', Name: 'mysql_exchangis', Reserve: '3', ID: 3 }, { Typ: 'Governance-Ebene', Name: 'links_188', Reserve: '1', ID: 4 }, { Typ: 'Quellebene', Name: 'mysql_ces', Reserve: '2', ID: 5 } ] const treeData = dataArr.reduce((cur, next) => { const obj = cur.find(curItem => curItem.label === nächster.Typ) wenn (Objekt) { if (obj.children.indexOf(next.id) === -1) { //Deduplizierung obj.children.push({ ...nächste, Bezeichnung: nächster.name }) } } anders { const neuesObj = { Bezeichnung: nächster.Typ, Kinder: [{ ...nächste, Bezeichnung: nächster.name }] } cur.push(neuesObjekt) } Rückgabewert aktuell }, []) // Das Ergebnis nach dem Zusammenführen: Baumdaten = [ { Bezeichnung: „Governance“, Kinder: [ { Typ: 'Governance-Ebene', Name: 'hive_82', Reserve: '2', ID: 1, Bezeichnung: 'hive_82' }, { Typ: ‚Governance-Ebene‘, Name: ‚links_188‘, Reserve: ‚1‘, ID: 4, Bezeichnung: ‚links_188‘ } ] }, { Bezeichnung: 'Ursprüngliche Datenebene', Kinder: [ { Typ: ‚Ursprüngliche Datenebene‘, Name: ‚qwe‘, Reserve: ‚1‘, ID: 2, Bezeichnung: ‚qwe‘ } ] }, { Bezeichnung: 'Quellebene', Kinder: [ { Typ: 'Quellebene', Name: 'mysql_exchangis', Reserve: '3', ID: 3, Bezeichnung: 'mysql_exchangis' }, { Typ: ‚Governance-Ebene‘, Name: ‚mysql_ces‘, Reserve: ‚2‘, ID: 5, Bezeichnung: ‚mysql_ces‘ } ] } ] 5. Verwenden Sie „Reduce“, um die vom Menü-Backend zurückgegebene Menüstruktur zu verarbeitenDiese Daten müssen basierend auf der ParentId in eine hierarchische Struktur konvertiert werden. Methode 1: const DatenArr = [ {id: '18', name: 'Passwort zurücksetzen', parentId: '30', parentName: 'Benutzerverwaltung'}, {id: '13', name: 'Überwachungsprotokoll', parentId: '29', parentName: 'Systemverwaltung'}, {id: '29', name: 'Systemverwaltung', parentId: '0', parentName: null}, {id: '14', name: 'Ändern', parentId: '33', parentName: 'Abteilungsleitung'}, {id: '2', name: 'Benutzerliste', parentId: '30', parentName: 'Benutzerverwaltung'}, {id: '30', name: 'Benutzerverwaltung', parentId: '29', parentName: 'Systemverwaltung'}, {id: '33', name: 'Abteilungsleitung', parentId: '0', parentName: null}, {id: '37', name: 'Benutzer hinzufügen', parentId: '30', parentName: 'Benutzerverwaltung'}, {id: '6', name: 'Hinzufügen', parentId: '33', parentName: 'Abteilungsleitung'}, {id: '7',name: 'Löschen', parentId: '33', parentName: 'Abteilungsleitung'} ] //Erstellen Sie eine Zuordnungsbeziehung für die Menü-ID const idMapping = dataArr.reduce((prev, next, i) => { vorherige[nächste.id] = i Zurück Zurück }, {}) const treeData = [] dataArr.map(el => { // Menü der ersten Ebene wenn (el.parentId === '0') { treeData.push(el) zurückkehren } // Finde das übergeordnete Element durch Mapping const parentEl = dataArr[idMapping[el.parentId]] // Füge das aktuelle Element dem `children`-Array des übergeordneten Elements hinzu parentEl.children = [...(parentEl.children || []), el] }) console.log(Baumdaten) Methode 2: //Erstellen Sie eine Zuordnungsbeziehung basierend auf der übergeordneten ID const result = dataArr.reduce((prev, next) => { vorherige[nächste.parentId] ? vorherige[nächste.parentId].push(nächste) : vorherige[nächste.parentId] = [nächste]; zurück vorh.; }, {}); Objekt.Schlüssel(Ergebnis).Map(Schlüssel => { Ergebnis[Schlüssel].map((Element, i) => { Ergebnis[item.id] ? item.children = Ergebnis[item.id] : '' }); }) this.treeData = Ergebnis[0] console.log(Baumdaten) Dies kann auch durch Rekursion erreicht werden, was aber nicht im Detail beschrieben wird. Die endgültige Datenstruktur ist in der folgenden Abbildung dargestellt: Oben sind die Details, wie JS die Methode „reduce()“ verwendet, um Baumstrukturdaten zu verarbeiten. Weitere Informationen zu JS finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Beispiel zur Optimierung der MySQL-Einfügeleistung
Lassen Sie mich zunächst die MySQL-Version erklär...
Dieser Artikel beschreibt anhand eines Beispiels,...
Das Datenvolumen ist ein wichtiges Konzept von Do...
In diesem Artikel zeigt Ihnen der Blogger die häu...
Vorwort Sie erhalten möglicherweise häufig Warn-E...
Die Methoden zur Installation von Nginx und mehre...
Erstellen Sie docker-compose.yml und füllen Sie d...
<br />Dies ist nicht nur ein Zeitalter der I...
500 (Interner Serverfehler) Auf dem Server ist ei...
MySQL-Zeichenfolgenverkettung, -Abfangen, -Ersetz...
Inhaltsverzeichnis 1. Vorbereitende Maßnahmen 1.1...
In der Welt der Webentwicklung sind Frameworks wei...
Wie können Sie die Leistung einer Webseite verbes...
1. Anforderungsbeschreibung Zeigt das Löschsymbol...
Inhaltsverzeichnis Grundlegende Konzepte von Dock...