Einführung
Das Kombinieren von Elementen aus mehreren Arrays kann zu zahlreichen Kombinationen führen , die bei statistischen Analysen oder kombinatorischen Problemen oft unerlässlich sind. Dieser Artikel stellt eine umfassende Lösung in JavaScript vor, um alle möglichen Kombinationen aus N Arrays zu generieren, die jeweils M Elemente enthalten.
Rekursiver Ansatz
Die bereitgestellte Lösung verwendet eine rekursive Hilfsfunktion zum Erstellen von Kombinationen schrittweise. Die Funktion durchläuft jedes Array, einschließlich seiner Elemente in der resultierenden Kombination. Wenn das aktuelle Array das letzte ist, wird die vollständige Kombination zum Ergebnisarray hinzugefügt. Andernfalls führt die Funktion eine Rekursion mit der aktualisierten Kombination durch und fährt mit dem nächsten Array fort.
Implementierung
function cartesian(...args) { var r = [], max = args.length - 1; function helper(arr, i) { for (var j = 0, l = args[i].length; j < l; j++) { var a = arr.slice(0); // clone arr a.push(args[i][j]); if (i == max) r.push(a); else helper(a, i + 1); } } helper([], 0); return r; }
Verwendung
Zum Generieren Um Kombinationen aus einer Liste von Arrays zu erhalten, übergeben wir die Arrays als Argumente an den Kartesianer Funktion.
cartesian([0, 1], [0, 1, 2, 3], [0, 1, 2]);
Das Ergebnis ist ein Array, das alle möglichen Kombinationen enthält:
[ [0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [0, 1, 2], [0, 2, 0], [0, 2, 1], [0, 2, 2], // ... ]
Hinweis
Wenn wir es vorziehen, ein Array von Arrays zu übergeben Anstelle einzelner Argumente können wir die Funktionssignatur in eine kartesische Funktion (Argumente) ändern.
Das obige ist der detaillierte Inhalt vonWie generiert man in JavaScript alle möglichen Kombinationen aus N Arrays mit jeweils M Elementen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!