1046 Stimmen

Array in Stücke aufteilen

Nehmen wir an, dass ich ein Javascript-Array habe, das wie folgt aussieht:

["Element 1","Element 2","Element 3",...]; // with close to a hundred elements.

Welcher Ansatz wäre angemessen, um das Array in viele kleinere Arrays mit, sagen wir, höchstens 10 Elementen aufzuteilen?

101voto

Shairon Toledo Punkte 1819

Einzeiler in ECMA 6

const [list,chunkSize] = [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15], 6]

[...Array(Math.ceil(list.length / chunkSize))].map(_ => list.splice(0,chunkSize))

93voto

AymKdn Punkte 2922

Ich habe die verschiedenen Antworten in jsperf.com getestet. Das Ergebnis ist dort verfügbar: https://web.archive.org/web/20150909134228/https://jsperf.com/chunk-mtds

Und die schnellste Funktion (und die funktioniert ab IE8) ist diese:

function chunk(arr, chunkSize) {
  if (chunkSize <= 0) throw "Invalid chunk size";
  var R = [];
  for (var i=0,len=arr.length; i<len; i+=chunkSize)
    R.push(arr.slice(i,i+chunkSize));
  return R;
}

46voto

Arek Flinik Punkte 709

Ich würde es vorziehen, die スプライス Methode:

var chunks = function(array, size) {
  var results = [];
  while (array.length) {
    results.push(array.splice(0, size));
  }
  return results;
};

45voto

George Herolyants Punkte 788

Heutzutage können Sie die Chunk-Funktion von Lodash verwenden, um das Array in kleinere Arrays aufzuteilen https://lodash.com/docs#chunk Sie müssen nicht mehr an den Schleifen herumfummeln!

39voto

rlemon Punkte 17094

Alte Frage: Neue Antwort! Ich habe eigentlich mit einer Antwort auf diese Frage gearbeitet und sie von einem Freund verbessern lassen! Hier ist sie also:

Array.prototype.chunk = function ( n ) {
    if ( !this.length ) {
        return [];
    }
    return [ this.slice( 0, n ) ].concat( this.slice(n).chunk(n) );
};

[1,2,3,4,5,6,7,8,9,0].chunk(3);
> [[1,2,3],[4,5,6],[7,8,9],[0]]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X