Codierung: Reduzieren Sie ein Array in Javascript

Feb 18 2023
Array reduzieren: Ein Array reduzieren bedeutet, ein Array zu verwenden, das verschachtelte Arrays enthalten kann (d. h

Array abflachen: Beim Abflachen eines Arrays wird ein Array, das verschachtelte Arrays enthalten kann (d. h. Arrays innerhalb von Arrays), in ein einzelnes, eindimensionales Array umgewandelt. Mit anderen Worten geht es darum, alle verschachtelten Arrays zu entfernen und ihre Elemente in einem einzigen Array zusammenzufassen.

Wir werden mehrere Lösungen diskutieren.

Lösung 1: Rekursion verwenden

Array abflachen

Der Code definiert eine aufgerufene Funktion FlattenArray, die ein Array als Argument verwendet. Das Ziel der Funktion besteht darin, ein verschachteltes Array zu nehmen und eine abgeflachte Version davon zurückzugeben. Wenn die Eingabe beispielsweise lautet [1, 2, [3, 4]], sollte die Funktion zurückgeben [1, 2, 3, 4].

Die Funktion beginnt mit der Erstellung eines leeren Arrays namens, das zum Speichern der abgeflachten Version des Eingabearrays verwendet wird. Anschließend tritt es in eine forSchleife ein, die jedes Element im Eingabearray durchläuft.

Für jedes Element im Eingabearray prüft die Funktion mithilfe der Array.isArrayMethode, ob das Element selbst ein Array ist. Wenn das Element ein Array ist, ruft sich die Funktion rekursiv mit dem verschachtelten Array als Argument auf und verwendet die concatMethode, um das abgeflachte verschachtelte Array mit dem zu kombinieren flatArray, das zu Beginn der Funktion erstellt wurde.

Wenn das Element kein Array ist, schiebt die Funktion das Element einfach auf das flatArray.

Nachdem alle Elemente im Eingabearray verarbeitet wurden, gibt die Funktion die zurück flatArray.

Vollständiger Code:

// Flatten Array
function FlattenArray(arr) {
  var flatArray = []
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      flatArray = flatArray.concat(FlattenArray(arr[i]))
    } else {
      flatArray.push(arr[i])
    }
  }
  return flatArray
}

var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]]
console.log(FlattenArray(arr))

Lösung 2: Verwenden der Reduziermethode

function flattenArray(arr) {
  return arr.reduce(function(flatArray, current) {
    if (Array.isArray(current)) {
      return flatArray.concat(flattenArray(current));
    } else {
      return flatArray.concat(current);
    }
  }, []);
}

var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]];
console.log(flattenArray(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

Die reduceMethode benötigt zwei Argumente: eine Rückruffunktion und einen Anfangswert für den Akkumulator. In diesem Fall ist der Akkumulator ein leeres Array, das zum Aufbau der abgeflachten Version des Eingabearrays verwendet wird.

Die Rückruffunktion benötigt zwei Argumente: den aktuell verarbeiteten Wert (der nacheinander jedes Element des Eingabearrays sein wird) und den aktuellen Wert des Akkumulators.

Innerhalb der Callback-Funktion prüfen wir mithilfe von , ob der aktuelle Wert ein Array ist Array.isArray. Wenn es sich um ein Array handelt, rufen wir flattenArrayrekursiv auf, um das verschachtelte Array zu reduzieren, und verketten dann das reduzierte Array mithilfe der concatMethode mit dem Akkumulator.

Wenn der aktuelle Wert kein Array ist, verketten wir ihn einfach mithilfe von mit dem Akkumulator concat.

Schließlich gibt die reduceMethode den Endwert des Akkumulators zurück, bei dem es sich um die abgeflachte Version des Eingabearrays handelt.

Mit diesem Code sollten Sie die gleiche Ausgabe wie zuvor erhalten: [1, 2, 3, 4, 5, 6, 7, 8, 9].

Wenn Sie mehr über das Codieren in Javascript erfahren möchten, folgen Sie mir unbedingt für weitere Codeausschnitte und Beispiele. Ich gebe Ihnen wertvolle Informationen und Tipps, wie Sie die Sprache beherrschen und Ihre Fähigkeiten als Entwickler verbessern. Bleiben Sie also auf dem Laufenden, um weitere Updates zu erhalten, und lassen Sie uns gemeinsam weiter lernen.

Danke fürs Lesen. Viel Spaß beim Lernen

Threading und Multiprocessing in Python erklärt Der einfachste Weg, auf eine Datenbank in JAVA zuzugreifen Am häufigsten gestellte Java8-Stream-basierte Interviewfrage – Teil 1 Apache Maven – in Kürze