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
In diesem Artikel wird der spezifische Code von J...
Inhaltsverzeichnis Transaktionsisolationsebene Wa...
In erster Linie bin ich Webdesigner. Genauer gesag...
Inhaltsverzeichnis Abhängigkeiten installieren Ko...
Der Datentyp von MySQL ist datetime. Die in der D...
1. Installieren Sie die Datenbank 1) yum -y insta...
Inhaltsverzeichnis Hintergrund Welche Methoden gi...
Ich möchte das grafische Tutorial zur Installatio...
Tomcat ist ein HTTP-Server, der die offizielle Re...
1. 85 % der Anzeigen werden nicht gelesen <br ...
Name Charakter Name Charakter Information Nachric...
Inhaltsverzeichnis Überblick Definition Instanzme...
Vorwort Heute bin ich in Nginx auf ein sehr selts...
Es gibt viele Unterschiede zwischen IE6 und IE7 in...
SQL-Methode zum Berechnen der Zeitstempeldifferen...