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:
- Öffnen Sie das Terminal/SSH und geben Sie
nodeein, um mit der Code-Praxis zu beginnen. - Wenden Sie die bereitgestellte Funktion
fnauf jedes Element im angegebenen Arrayarran. - Teilen Sie das Array jedes Mal auf, wenn
fneinen neuen Wert zurückgibt. - Verwenden Sie
Array.prototype.reduce(), um ein Akkumulator-Objekt zu erstellen, das das resultierende Array und den letzten Wert enthält, der vonfnzurückgegeben wurde. - Verwenden Sie
Array.prototype.push(), um jedes Element inarrder entsprechenden Partition im Akkumulator-Array hinzuzufügen. - 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.