Heim >Web-Frontend >js-Tutorial >Wie kann ich Permutationen eines Integer-Arrays in JavaScript generieren?

Wie kann ich Permutationen eines Integer-Arrays in JavaScript generieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-15 01:31:11527Durchsuche

How Can I Generate Permutations of an Integer Array in JavaScript?

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!

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