So konvertieren Sie ein JavaScript-Array in eine Baumstruktur

So konvertieren Sie ein JavaScript-Array in eine Baumstruktur

1. Nachfrage

Das Backend stellt solche Daten bereit, damit das Frontend sie in eine Baumstruktur (ohne doppelte Daten) konvertieren kann. Schauen wir uns ohne weitere Umschweife zunächst an, welche Art von Array-Daten gegeben sind und in welche Art von Baumstruktur sie konvertiert werden.

Das vom Server gesendete Array

Konstanten arr = [
      [
        {"deptId":"D019",
        "deptName":"Verkaufsabteilung"},
        {"deptId":"D019101",
        "deptName":"Verkaufszentrum Nordchina"}
      ],[
        {"deptId":"D083",
        "deptName":"Musikabteilung"}
      ],[
        {"deptId":"D027",
        "Abteilungsname":"Hangzhou Forschungsinstitut"},
        {"deptId":"D027048",
        "deptName":"Technische Abteilung"},
        {"deptId":"D027048002",
        "Abteilungsname": "Projektmanagementzentrum"}
      ],[
        {"deptId":"D027",
        "Abteilungsname":"Hangzhou Forschungsinstitut"},
        {"deptId":"D027048",
        "deptName":"Technische Abteilung"}
      ],[
        {"deptId":"D027",
        "Abteilungsname":"Hangzhou Forschungsinstitut"},
        {"deptId":"D027048",
        "deptName":"Technische Abteilung"}
      ]
    ]

Schließlich umgewandelt in

Konstanten arr = [
    {
      Abteilungs-ID: "D019",
      deptName: 'Verkaufsabteilung',
      Kinder: [{
        Abteilungs-ID: 'D019101',
        deptName: 'Verkaufszentrum Nordchina',
        Kinder: [],
      }]
    },
    {
      Abteilungs-ID: 'D083',
      deptName: 'Musikabteilung',
      Kinder: []
    },
    {
      Abteilungs-ID: 'D027',
      Abteilungsname: „Hangzhou Research Institute“,
      Kinder: [{
        Abteilungs-ID: 'D027048',
        deptName: 'Technische Abteilung',
        Kinder: [{
          Abteilungs-ID: 'D027048002',
          deptName: 'Projektmanagement-Center',
          Kinder: []
        }]
      }]
    },
  ]

2. Code (entwickelt in reactHooks)

const [treeData, setTreeData] = useState([]);
  console.log(treeData); //treeData ist die endgültige erforderliche Baumstruktur (in meinem lokalen Browser gedruckt ist korrekt)
  
  useEffect(() => {
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::
    const arr = JSON.parse(str).flat(); //Abflachen let newArr = [];
    keineWiederholung(arr).Länge und keineWiederholung(arr).fürEach(it => {
      anhängenKind(es, neuesArr);
    });
  }, [])

  const noRepeat = (arr) => { //Duplikate entfernen let newobj = {}; 
    return arr.reduce((vorheriger Wert, aktueller Wert) => {
    neuesObjekt[aktuellerWert.Abt.Id] ? '' : neuesObjekt[aktuellerWert.Abt.Id] = preVal.push(aktuellerWert); 
      Rückgabewert 
    }, []);
  }

  const appendChild = (Element, neuesArr) => {
    if(!newArr.find(it => item.deptId.indexOf(it.deptId) > -1)) { //Alle Abteilungen der ersten Ebene newArr.push({
        deptId: Artikel.deptId,
        Abteilungsname: Artikel.Abteilungsname,
        Kinder: [],
      });
      setTreeData(neuerArr);
    }anders {
      anhängenAnderesKind(Element, neuesArr);
    }
  }

  const appendOtherChild = (Element, neuesArr) => {
    newArr.map(it => {
      wenn(item.deptId.indexOf(it.deptId) > -1 && item.deptId.length === it.deptId.length+3) {
        es.Kinder.push({
          deptId: Artikel.deptId,
          Abteilungsname: Artikel.Abteilungsname,
          Kinder: [],
        })
      }anders {
        anhängenAnderesKind(Element, es.Kinder);
      }
    });
    setTreeData(neuerArr);
  }

Zusammenfassen

Vielleicht unterscheiden sich diese Daten von Ihren, aber die Logik ist wahrscheinlich ziemlich ähnlich. Sie können sich diese Dutzenden von Codezeilen genau ansehen.

Dies ist das Ende dieses Artikels zum Konvertieren von JavaScript-Arrays in Baumstrukturen. Weitere Informationen zum Konvertieren von JavaScript-Arrays in Baumstrukturen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • JS verwendet die Methode „reduce()“, um Baumstrukturdaten zu verarbeiten
  • Eine kurze Diskussion über einen effizienten Algorithmus zum Erstellen von Baumstrukturen in JavaScript
  • Effizienter JavaScript-Algorithmus zum Konvertieren flacher Daten in eine Baumstruktur
  • So verwenden Sie Rekursion, um ein einfaches Baumstrukturbeispiel in JavaScript zu schreiben
  • Komplexe JSON-Datenverarbeitung: Konvertieren von JSON-Baumstrukturdaten in Java-Objekte und Speichern dieser in der Datenbank

<<:  Detailliertes Installations- und Deinstallationstutorial für MySQL 8.0.12

>>:  Wenn ein Linux (Ubuntu)-Benutzer N-mal hintereinander ein falsches Passwort eingibt, um sich anzumelden, wird das System automatisch für X Minuten gesperrt

Artikel empfehlen

Implementierung eines Docker-Compose-Bereitstellungsprojekts basierend auf MySQL8

1. Erstellen Sie zunächst den entsprechenden Ordn...

So zeichnen Sie spezielle Grafiken in CSS

1. Dreieck Rahmeneinstellungen Code: Breite: 300p...

Umfassende Analyse der Isolationsebenen in MySQL

Wenn die Datenbank gleichzeitig denselben Datenst...

Detaillierte Installation und Verwendung von RocketMQ in Docker

Um nach RocketMQ-Images zu suchen, können Sie auf...

Einführung in die Überwachung des MySQL MHA-Betriebsstatus

Inhaltsverzeichnis 1. Projektbeschreibung 1.1 Hin...

Detaillierte Erklärung, wie NGINX PV, UV und unabhängige IP der Website zählt

Nginx: PV, UV, unabhängige IP Jeder, der Websites...

Detaillierte Erklärung des Unterschieds zwischen $router und $route in Vue

Wir verwenden normalerweise Routing in Vue-Projek...

Aktivieren oder Deaktivieren des GTID-Modus in MySQL online

Inhaltsverzeichnis Grundlegende Übersicht GTID on...

Globale Aufrufimplementierung von Vue2.x Picker auf mobilen Endgeräten

Inhaltsverzeichnis Was ist die Picker-Komponente ...

vite2.x implementiert das On-Demand-Laden von Ant-Design-Vue@next-Komponenten

1. Version verwenden vite:2.0 Ant-Design-Vue: 2.0...

Beispielcode zum Zeichnen von Doppelpfeilen in gängigen CSS-Stilen

1. Mehrere Aufrufe eines einzelnen Pfeils Sobald ...

So installieren Sie MySQL Community Server 5.6.39

Dieser Artikel enthält das ausführliche Tutorial ...