Heim >Web-Frontend >js-Tutorial >Wie können Sie Objekte in einem JavaScript-Array mit demselben „Name'-Schlüssel zusammenführen und ihre „Wert'-Schlüssel in einem Array kombinieren?
Objekte in Arrays mit gemeinsamem Schlüssel in JavaScript zusammenführen
Problemstellung
Betrachten Sie ein Array mit Objekten, wobei jedes Objekt einen „Name“-Schlüssel hat. Objekte mit demselben „Namen“ haben gemeinsame Werte. Die Aufgabe besteht darin, das Array neu zu organisieren, indem die „Wert“-Schlüssel aller Objekte mit demselben „Namen“ zusammengeführt werden.
Lösung
Um Objekte in einem Array zusammenzuführen Wenn Sie denselben „Name“-Schlüssel verwenden, können Sie den folgenden Ansatz verwenden:
<code class="javascript">var array = [{ name: "foo1", value: "val1" }, { name: "foo1", value: ["val2", "val3"] }, { name: "foo2", value: "val4" }]; 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); } }); console.dir(output);</code>
Diese Lösung durchläuft das Eingabearray, sucht nach vorhandenen Objekten mit demselben „Name“-Schlüssel und hängt den „Wert“ von an das aktuelle Objekt auf den „Wert“ des vorhandenen Objekts. Wenn kein Objekt vorhanden ist, wird das aktuelle Objekt zum Ausgabearray hinzugefügt.
Das Ergebnis dieser Operation ist ein Array von Objekten, in dem die Schlüssel „Wert“ von Objekten mit demselben „Name“-Schlüssel zusammengeführt werden ein Array.
[ { name: "foo1", value: ["val1", "val2", "val3"] }, { name: "foo2", value: ["val4"] } ]
Das obige ist der detaillierte Inhalt vonWie können Sie Objekte in einem JavaScript-Array mit demselben „Name'-Schlüssel zusammenführen und ihre „Wert'-Schlüssel in einem Array kombinieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!