Gegeben sei ein Array von Werten Wie kann ich es in sub-arrays
aus gleichwertigen Elementen aufteilen?
Gegeben dieses Array
%Vor%Ich möchte diese Ausgabe
%Vor%Ein möglicher Weg, dies zu lösen, wäre eine Art Index zu erstellen, der das Vorkommen jedes Elements wie folgt anzeigt.
%Vor%Und schließlich verwenden Sie den Index, um das Ausgabe-Array neu zu erstellen.
%Vor% Aber mit dieser Lösung verliere ich die ursprünglichen Werte. Natürlich ist es in diesem Fall kein großes Problem (ein Int
-Wert ist immer noch und Int
, selbst wenn er neu erstellt wurde), aber ich möchte diese Lösung auf komplexere Datenstrukturen wie diese anwenden
Die Funktion, nach der ich suche, wäre eine Art Umkehrung von flatten()
, infact
Ich hoffe, ich habe mich klar ausgedrückt, lassen Sie es mich wissen, wenn Sie weitere Informationen benötigen.
Wenn Sie CocoaPods / Carthage / Swift Package Manager / etc. Sie könnten Pakete wie oisdk / SwiftSequence verwenden, die die group()
-Methode bereitstellen:
oder UsrNameu1 / TraverSwift , das groupBy
:
Wenn Sie keine externen Abhängigkeiten hinzufügen möchten, könnten Sie immer einen Algorithmus schreiben wie:
%Vor% Nehmen wir an, Sie haben ein unsortiertes Array von Elementen. Sie müssen das anfängliche Array sortieren, dann haben Sie so etwas:
[1, 1, 1, 3, 3, 4]
Danach initialisieren Sie zwei Arrays: eines für das Speichern von Arrays und ein weiteres für die Verwendung als aktuelles Array.
Schleife durch das ursprüngliche Array und:
Hoffe es hilft!