Das Partitionieren von Arrays mit JavaScript Reduce

JavaScriptJavaScriptBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir untersuchen, wie man ein Array mithilfe von JavaScript basierend auf einer bereitgestellten Funktion aufteilt. Wir werden die Array.prototype.reduce()-Methode verwenden, um die aufgeteilten Werte in ein Array zu akkumulieren, während wir auf Änderungen in der Ausgabe der bereitgestellten Funktion prüfen. Am Ende dieses Labs werden Sie eine solide Vorstellung davon haben, wie man Arrays in JavaScript aufteilt.

Array-Partitionierungsalgorithmus

Um ein Array aufzuteilen, folgen Sie diesen Schritten:

  1. Öffnen Sie das Terminal/SSH und geben Sie node ein, um mit der Code-Praxis zu beginnen.
  2. Wenden Sie die bereitgestellte Funktion fn auf jedes Element im angegebenen Array arr an.
  3. Teilen Sie das Array jedes Mal auf, wenn fn einen neuen Wert zurückgibt.
  4. Verwenden Sie Array.prototype.reduce(), um ein Akkumulator-Objekt zu erstellen, das das resultierende Array und den letzten Wert enthält, der von fn zurückgegeben wurde.
  5. Verwenden Sie Array.prototype.push(), um jedes Element in arr der entsprechenden Partition im Akkumulator-Array hinzuzufügen.
  6. Geben Sie das resultierende Array zurück.

Hier ist die Codeimplementierung:

const partitionBy = (arr, fn) =>
  arr.reduce(
    ({ res, last }, v, i, a) => {
      const next = fn(v, i, a);
      if (next !== last) res.push([v]);
      else res[res.length - 1].push(v);
      return { res, last: next };
    },
    { res: [] }
  ).res;

Beispielverwendung:

const numbers = [1, 1, 3, 3, 4, 5, 5, 5];
partitionBy(numbers, (n) => n % 2 === 0); // [[1, 1, 3, 3], [4], [5, 5, 5]]
partitionBy(numbers, (n) => n); // [[1, 1], [3, 3], [4], [5, 5, 5]]

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Array-Partitionierungs-Lab abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.