Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie erzeuge ich alle Kombinationen (kartesisches Produkt) von Werten in JavaScript-Arrays?

Linda Hamilton
Freigeben: 2024-11-03 21:05:29
Original
337 Leute haben es durchsucht

How to Generate All Combinations (Cartesian Product) of Values in JavaScript Arrays?

Kartesisches Produkt von JavaScript-Arraywerten

Problem:

Gegeben eine beliebige Anzahl von JavaScript Arrays unterschiedlicher Länge ermitteln alle Kombinationen (kartesisches Produkt) ihrer Werte.

Lösung:

Diese Aufgabe kann durch Rekursion effizient gelöst werden. Dabei geht es darum, jedes Array zu durchlaufen und seine Werte mit allen möglichen Kombinationen der verbleibenden Arrays zu kombinieren.

Betrachten Sie die folgende Implementierung:

function allPossibleCases(arr) {
  if (arr.length === 1) {
    return arr[0];
  } else {
    const result = [];
    const casesOfRest = allPossibleCases(arr.slice(1));  // recur with the rest of arr
    casesOfRest.forEach((c) => {
      for (let i = 0; i < arr[0].length; i++) {
        result.push(arr[0][i] + c);
      }
    });
    return result;
  }
}
Nach dem Login kopieren

Verwendung:

var allArrays = [['a', 'b'], ['c'], ['d', 'e', 'f']];
var results = allPossibleCases(allArrays); // outputs ["acd", "bcd", "azd", ...]
Nach dem Login kopieren

Erklärung:

  • Die allPossibleCases-Funktion verwendet ein Array von Arrays als Eingabe.
  • Wenn das Eingabearray nur ein Unterarray hat , gibt es seine Werte zurück.
  • Andernfalls ruft es sich selbst rekursiv mit den verbleibenden Unterarrays auf und kombiniert jeden Unterarray-Wert mit allen möglichen Kombinationen der verbleibenden Unterarrays.
  • Die Funktion durchläuft jedes Unterarray und verkettet seine Werte mit jeder Kombination aus den verbleibenden Arrays, wodurch alle möglichen Kombinationen generiert werden.
  • Das Endergebnis ist ein Array von Zeichenfolgen, das alle eindeutigen Kombinationen von Werten aus den Eingabearrays enthält.

Das obige ist der detaillierte Inhalt vonWie erzeuge ich alle Kombinationen (kartesisches Produkt) von Werten in JavaScript-Arrays?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage