많은 답변이 있었지만 이것이 내가 사용하는 것입니다.
const chunk = (arr, size) =>
arr
.reduce((acc, _, i) =>
(i % size)
? acc
: [...acc, arr.slice(i, i + size)]
, [])
// USAGE
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk(numbers, 3)
// [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
먼저 인덱스를 청크 크기로 나눌 때 나머지를 확인하십시오.
나머지가있는 경우 누산기 배열을 반환하십시오.
나머지가 없으면 인덱스를 청크 크기로 나눌 수 있으므로 원래 배열에서 슬라이스를 가져 와서 (현재 인덱스에서 시작하여) 어큐뮬레이터 배열에 추가하십시오.
따라서 reduce의 각 반복에 대해 반환 된 누산기 배열은 다음과 같습니다.
// 0: [[1, 2, 3]]
// 1: [[1, 2, 3]]
// 2: [[1, 2, 3]]
// 3: [[1, 2, 3], [4, 5, 6]]
// 4: [[1, 2, 3], [4, 5, 6]]
// 5: [[1, 2, 3], [4, 5, 6]]
// 6: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
// 7: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
// 8: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
// 9: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]