Heim >Datenbank >MySQL-Tutorial >Wie kann ich einen Inner Join im SQL-Stil für zwei JavaScript-Arrays durchführen?
JavaScript-Arrays mit SQL-ähnlicher Syntax verbinden
Problem:
Sie haben zwei JavaScript Arrays: eines enthält Benutzerprofile und das andere enthält Fragen. Das Benutzerprofil-Array besteht aus Objekten mit den Schlüsseln „id“ und „name“, während das Array „fragen“ aus Objekten mit den Schlüsseln „id“, „text“ und „createdBy“ besteht. Der Schlüssel „createdBy“ in Fragen stimmt immer mit einem ID-Wert in Benutzerprofilen überein.
Ihr Ziel ist es, diese Arrays auf ähnliche Weise wie Tabellen in einer Datenbank zu „verbinden“ und so ein neues Array zu erstellen, das Objekte mit der ID enthält. Text- und Namensschlüssel.
Lösung:
JavaScript bietet eine effiziente Methode zum Durchführen innerer Verknüpfungen für Arrays Verwenden Sie die folgenden Schritte:
Definieren Sie eine Inner Join-Funktion:
Erstellen Sie eine Funktion namens innerJoin, die drei Parameter benötigt: zwei zu verbindende Arrays , xs und ys sowie eine Selektorfunktion sel, die angibt, welche Eigenschaften in die Verknüpfung einbezogen werden sollen Array.
Kartesische Produktreduktion:
Verwenden Sie Reduzieren, um über jedes Element in xs zu iterieren, und für jedes Element über jedes Element in Ja. Dadurch entsteht effektiv ein kartesisches Produkt der beiden Arrays.
Filtern und Auswählen:
Wenden Sie innerhalb der verschachtelten Schleife die Auswahlfunktion sel an jedes Elementpaar. Die Auswahlfunktion sollte ein neues Objekt mit den gewünschten Eigenschaften zurückgeben. Wenn die Auswahlfunktion einen falschen Wert zurückgibt, wird das Paar verworfen.
Ergebnisse verketten:
Die innerJoin-Funktion gibt ein Array zurück, das das ist Ergebnis der Verkettung aller vom Selektor zurückgegebenen Objekte Funktion.
Implementierung:
Hier ist eine Demonstration mit den folgenden Datensätzen:
const userProfiles = [ {id: 1, name: "Ashok"}, {id: 2, name: "Amit"}, {id: 3, name: "Rajeev"}, ]; const questions = [ {id: 1, text: "text1", createdBy: 2}, {id: 2, text: "text2", createdBy: 2}, {id: 3, text: "text3", createdBy: 1}, {id: 4, text: "text4", createdBy: 2}, {id: 5, text: "text5", createdBy: 3}, {id: 6, text: "text6", createdBy: 3}, ];
const result = innerJoin(userProfiles, questions, ({id: uid, name}, {id, text, createdBy}) => createdBy === uid && {id, text, name});
Ausgabe:
console.log(result); // Outputs: [ {id: 1, text: "text3", name: "Ashok"}, {id: 2, text: "text1", name: "Amit"}, {id: 2, text: "text2", name: "Amit"}, {id: 2, text: "text4", name: "Amit"}, {id: 3, text: "text5", name: "Rajeev"}, {id: 3, text: "text6", name: "Rajeev"}, ]
Diese Ausgabe zeigt, dass die Die innerJoin-Funktion hat die beiden Arrays erfolgreich verbunden und dabei die Eigenschaften „id“, „text“ und „name“ ausgewählt.
Das obige ist der detaillierte Inhalt vonWie kann ich einen Inner Join im SQL-Stil für zwei JavaScript-Arrays durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!