Permutationen in JavaScript
Wenn man vor der Aufgabe steht, Permutationen für ein Array von ganzen Zahlen zu generieren, beinhaltet der direkte Ansatz einen rekursiven Algorithmus. Ein solcher Algorithmus zur Verarbeitung von Zeichenfolgen wird im angegebenen Codeausschnitt vorgestellt. Beim Versuch, diesen Algorithmus für die Arbeit mit einem Array von Ganzzahlen anzupassen, ergeben sich jedoch Herausforderungen aufgrund der Unterschiede in der Art und Weise, wie Methoden mit verschiedenen Datentypen arbeiten.
Um dieses Problem zu beheben, ist eine modifizierte Version des Algorithmus erforderlich. Dies berücksichtigt das spezifische Verhalten von ganzen Zahlen. Eine elegante Lösung, die unten vorgestellt wird, berücksichtigt folgende Überlegungen:
function permutator(inputArr) { var results = []; function permute(arr, memo) { var cur, memo = memo || []; for (var i = 0; i < arr.length; i++) { cur = arr.splice(i, 1); if (arr.length === 0) { results.push(memo.concat(cur)); } permute(arr.slice(), memo.concat(cur)); arr.splice(i, 0, cur[0]); } return results; } return permute(inputArr); }
Dieser Algorithmus arbeitet mit einer Kopie des Eingabearrays und stellt sicher, dass das ursprüngliche Array unverändert bleibt. Es untersucht rekursiv alle möglichen Kombinationen und speichert die Permutationen in einem Array von Arrays.
Alternativ ist auch eine ES6 (2015)-Version dieses Algorithmus verfügbar:
const permutator = (inputArr) => { let result = []; const permute = (arr, m = []) => { if (arr.length === 0) { result.push(m) } else { for (let i = 0; i < arr.length; i++) { let curr = arr.slice(); let next = curr.splice(i, 1); permute(curr.slice(), m.concat(next)) } } } permute(inputArr) return result; }
Diese Version verwendet einen Pfeil Funktionen und Standardparameterwerte für eine präzisere Syntax. Die Funktionalität bleibt dieselbe und generiert Permutationen für das bereitgestellte Array.
Das obige ist der detaillierte Inhalt vonWie kann ich Permutationen eines Integer-Arrays in JavaScript generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!