Heim >Web-Frontend >js-Tutorial >Wie generiert man alle Kombinationen (kartesisches Produkt) von Werten aus JavaScript-Arrays?

Wie generiert man alle Kombinationen (kartesisches Produkt) von Werten aus JavaScript-Arrays?

DDD
DDDOriginal
2024-11-03 16:19:02760Durchsuche

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

Alle Kombinationen (kartesisches Produkt) von JavaScript-Array-Werten finden

Das Erzeugen aller Kombinationen von Werten aus mehreren Arrays in JavaScript kann durch erreicht werden Konzept des kartesischen Produkts. So können Sie es angehen:

Rekursion für kartesisches Produkt


Um alle Kombinationen zu generieren, können wir eine rekursive Funktion verwenden, die iteriert jedes Array und kombiniert Elemente aus allen Arrays.

Hier ist ein Beispiel einer rekursiven Funktion, die das kartesische Produkt mehrerer Arrays findet:



< ;pre class="snippet-code-js lang-js Prettyprint-override">function allPossibleCases(arr) {
if (arr.length == 1) {

return arr[0];

} else {

var result = [];
var allCasesOfRest = allPossibleCases(arr.slice(1)); // recur with the rest of array
for (var i = 0; i < allCasesOfRest.length; i++) {
  for (var j = 0; j < arr[0].length; j++) {
    result.push(arr[0][j] + allCasesOfRest[i]);
  }
}
return result;

}
}



Verwendungsbeispiel


Angenommen, Sie haben drei Arrays:

var first = ['a', 'b'], <br>var Second = ['c'],<br>var Third = ['d', 'e', ​​'f'];

Mit der allPossibleCases-Funktion können Sie alle Kombinationen wie folgt generieren:




var allArrays = [erster, zweiter, dritter];<br>console.log(allPossibleCases(allArrays));



Dadurch werden die folgenden Kombinationen ausgegeben:

acd
ace
acf
bcd
bce
bcf
azd
aze
azf
bzd
bze
bzf

Hinweis: Die Reihenfolge der Elemente in jeder Kombination kann abhängig von der Reihenfolge der Arrays in der Variablen allArrays variieren.

Das obige ist der detaillierte Inhalt vonWie generiert man alle Kombinationen (kartesisches Produkt) von Werten aus JavaScript-Arrays?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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