Heim >Web-Frontend >js-Tutorial >Wie kann man in JavaScript effizient kartesische Produkte aus Arrays unterschiedlicher Länge generieren?
Um alle möglichen Kombinationen von Elementen aus einem Satz von Arrays mit unterschiedlichen Längen zu generieren, stehen JavaScript-Programmierer vor einer einzigartigen Herausforderung. Das Anpassen einer Lösung für den Umgang mit einer dynamischen Anzahl von Arrays kann schwierig sein.
Ein einfacher und effizienter Ansatz besteht darin, eine rekursive Hilfsfunktion wie die unten dargestellte zu verwenden:
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; }
Um dies zu nutzen Funktion übergeben Sie einfach Ihre Arrays als Argumente:
cartesian([0, 1], [0, 1, 2, 3], [0, 1, 2]);
Die Ausgabe enthält alle möglichen Kombinationen von Elementen aus den bereitgestellten Arrays:
[ [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], ]
Passen Sie für ein Array von Arrays die Signatur der Funktion an die Funktion kartesisch(args) an, anstatt Restparameter zu verwenden. Dieser Ansatz ermöglicht die Handhabung einer beliebigen Anzahl von Arrays mit unterschiedlicher Elementanzahl und bietet so eine flexible Lösung für dieses kombinatorische Problem.
Das obige ist der detaillierte Inhalt vonWie kann man in JavaScript effizient kartesische Produkte aus Arrays unterschiedlicher Länge generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!