Ich muss ein JavaScript-Array in n
große Blöcke aufteilen .
Beispiel: Angesichts dieses Arrays
["a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12", "a13"]
und a n
gleich 4 sollte die Ausgabe folgende sein:
[ ["a1", "a2", "a3", "a4"],
["a5", "a6", "a7", "a8"],
["a9", "a10", "a11", "a12"],
["a13"]
]
Ich kenne reine JavaScript- Lösungen für dieses Problem, aber da ich bereits Lodash verwende, frage ich mich, ob Lodash eine bessere Lösung dafür bietet.
Bearbeiten:
Ich habe einen jsPerf-Test erstellt , um zu überprüfen, wie viel langsamer die Unterstrichlösung ist.
javascript
split
functional-programming
underscore.js
lodash
Cesar Canassa
quelle
quelle
Versuchen Sie für eine auf Unterstrichen basierende Lösung Folgendes:
Mit der Chain-Wrapper-Methode können Sie die beiden Anweisungen wie folgt kombinieren:
quelle
groupBy
ein Objekt zurück , kein Array. Kein Dealbreaker - Sie erhalten im Grunde die gleiche Funktionalität - aber ein seltsames Stück Semantik. Edit: Oh, das macht es, um die Verkettbarkeit aufrechtzuerhalten. Immer noch interessant.splice
eine Schleife immer noch ein Dreiliner und, wie ich vermute, viel performanter. Wenn Ihre Arrays kurz sind, spielt es wahrscheinlich keine Rolle, aber wenn Sie mit Hunderten oder Tausenden von Elementen arbeiten, behalten Sie die Leistung im Auge.Ein möglicherweise einfacherer Ausdruck:
quelle
Unterstrich unterstützt _.chunk () nativ ab Version 1.9.0.
quelle
Probieren Sie dieses aus, es ist viel praktischer (wenn Sie beispielsweise das Array basierend auf der Anzahl der Elemente aufteilen möchten, die in jedem Unterarray als Container enthalten sein sollen):
und die Verwendung in Ihrem Fall:
und ein anderer Fall:
quelle
start
Parameter ist imho nicht wirklich praktisch. Normalerweise möchten Sie es nicht bestehen. Sie müssen jedoch immer die Blockgröße angeben. Tauschen Sie diese beiden Parameter besser aus.do while
Schleife? Niemand will leere Stücke bekommen.