Ich habe ein Array von E-Mails (es kann nur 1 E-Mail oder 100 E-Mails sein), und ich muss das Array mit einer Ajax-Anfrage senden (die ich zu tun weiß), aber ich kann nur ein Array senden, das hat 10 oder weniger E-Mails darin. Wenn es also ein Original-Array mit 20 E-Mails gibt, muss ich sie in 2 Arrays mit jeweils 10 E-Mails aufteilen. oder wenn das ursprüngliche Array 15 E-Mails enthält, dann 1 Array mit 10 und ein weiteres Array mit 5. Ich verwende jQuery. Was wäre der beste Weg, dies zu tun?
quelle
Im Gegensatz
splice()
,slice()
ist zerstörungsfrei zu der ursprünglichen Anordnung.quelle
Durchlaufen Sie einfach das Array und spleißen Sie es, bis alles verbraucht ist.
Ausgabe
quelle
Sie können lodash verwenden: https://lodash.com/docs
quelle
Angenommen, Sie möchten das ursprüngliche Array nicht zerstören, können Sie Code wie diesen verwenden, um das lange Array in kleinere Arrays aufzuteilen, über die Sie dann iterieren können:
quelle
Eine weitere Implementierung:
NB - Das ursprüngliche Array wird dadurch nicht geändert.
Oder, wenn Sie eine funktionale, 100% unveränderliche (obwohl es wirklich nichts Schlechtes ist, an Ort und Stelle zu mutieren, wie oben beschrieben) und eigenständige Methode bevorzugen:
quelle
Als Ergänzung zu @ jyores Antwort und für den Fall, dass Sie das ursprüngliche Array beibehalten möchten:
quelle
Array.reduce kann für große Arrays ineffizient sein, insbesondere mit dem Mod-Operator. Ich denke, eine sauberere (und möglicherweise leichter zu lesende) funktionale Lösung wäre folgende:
quelle
Eine andere Methode:
Dies wirkt sich nicht auf das ursprüngliche Array aus, da eine mit Slice erstellte Kopie an das Argument 'this' der Karte übergeben wird.
quelle
Ich möchte auch meine Lösung teilen. Es ist etwas ausführlicher, funktioniert aber auch.
Ausgabe (formatiert):
quelle
Eine weitere Implementierung mit Array.reduce (ich denke, es ist die einzige, die fehlt!):
Wie viele Lösungen oben, ist dies zerstörungsfrei. Das Zurückgeben eines leeren Arrays bei einer Größe von 0 ist nur eine Konvention. Wenn der
if
Block weggelassen wird, wird eine Fehlermeldung angezeigt, die möglicherweise Ihren Wünschen entspricht.quelle
Sie können sich diesen Code ansehen. Einfach und effektiv.
quelle
Hier ist ein einfacher Einzeiler
quelle
Kompakter:
quelle
Wenn Sie eine Methode wünschen, die das vorhandene Array nicht ändert, versuchen Sie Folgendes:
quelle
quelle
quelle
als eine Funktion
benutzen
quelle
mit Rekursion
Hinweis: Das vorhandene Array, dh myArr, wird geändert.
quelle
Mit dem Prototyp können wir direkt auf die Array-Klasse setzen
quelle