Heim > Web-Frontend > js-Tutorial > Wie kann ich JavaScript-Objekte mit gemeinsamen Schlüsseln in einem neuen Array zusammenführen, in dem Werte kombiniert werden?

Wie kann ich JavaScript-Objekte mit gemeinsamen Schlüsseln in einem neuen Array zusammenführen, in dem Werte kombiniert werden?

DDD
Freigeben: 2024-11-03 06:53:02
Original
803 Leute haben es durchsucht

How can I merge JavaScript objects with common keys into a new array where values are combined?

JavaScript-Objekte mit gemeinsamem Schlüssel zusammenführen

In JavaScript kann das Zusammenführen von Objekten unkompliziert sein. Allerdings wird der Prozess komplexer, wenn es sich um ein Array von Objekten handelt, bei denen mehrere Objekte einen gemeinsamen Schlüssel haben und ihre Werte kombiniert werden müssen. Betrachten Sie das folgende Beispiel:

<code class="js">var array = [
    {
        name: "foo1",
        value: "val1"
    }, {
        name: "foo1",
        value: ["val2", "val3"]
    }, {
        name: "foo2",
        value: "val4"
    }
];</code>
Nach dem Login kopieren

Das Ziel besteht darin, das Array in ein Format zu reorganisieren, in dem alle mit demselben Namensschlüssel verknüpften Werte zusammengeführt werden. Die erwartete Ausgabe würde so aussehen:

<code class="js">var output = [
    {
        name: "foo1",
        value: ["val1", "val2", "val3"]
    }, {
        name: "foo2",
        value: ["val4"]
    }
];</code>
Nach dem Login kopieren

Um diese Zusammenführung zu erreichen, besteht ein effektiver Ansatz darin, das Eingabearray zu durchlaufen und nach vorhandenen Objekten mit demselben Schlüsselnamen zu filtern. Wenn ein vorhandenes Objekt gefunden wird, wird sein Wert aktualisiert, um den neuen Wert einzuschließen. Andernfalls wird ein neues Objekt erstellt und dem Ausgabearray hinzugefügt.

Hier ist eine Beispielimplementierung:

<code class="js">var output = [];

array.forEach(function(item) {
    var existing = output.filter(function(v, i) {
        return v.name == item.name;
    });
    if (existing.length) {
        var existingIndex = output.indexOf(existing[0]);
        output[existingIndex].value = output[existingIndex].value.concat(item.value);
    } else {
        if (typeof item.value == 'string')
            item.value = [item.value];
        output.push(item);
    }
});</code>
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass die mit jedem Namensschlüssel verknüpften Werte korrekt zu einem zusammengeführt werden einzelnes Objekt innerhalb des Ausgabearrays. Durch die Iteration durch das Eingabearray und die Verarbeitung vorhandener und neuer Objekte bietet es eine umfassende Lösung zum Zusammenführen von Objekten mit gemeinsamen Schlüsseln.

Das obige ist der detaillierte Inhalt vonWie kann ich JavaScript-Objekte mit gemeinsamen Schlüsseln in einem neuen Array zusammenführen, in dem Werte kombiniert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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