30秒学会 JavaScript 片段 · 2017年8月22日

30秒学会 JavaScript 片段 – chunkIntoN

Chunks an array into n smaller arrays.

Use Math.ceil() and Array.prototype.length to get the size of each chunk.
Use Array.from() to create a new array of size n.
Use Array.prototype.slice() to map each element of the new array to a chunk the length of size.
If the original array can’t be split evenly, the final chunk will contain the remaining elements.

代码片段

const chunkIntoN = (arr, n) => {
  const size = Math.ceil(arr.length / n);
  return Array.from({ length: n }, (v, i) =>
    arr.slice(i * size, i * size + size)
  );
}

使用样例

chunkIntoN([1, 2, 3, 4, 5, 6, 7], 4); // [[1,2], [3,4], [5,6], [7]]