다음과 같은 JS 배열이 있다고 상상해보십시오.
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
내가 원하는 것은 그 배열을 N 개의 작은 배열로 나누는 것입니다. 예를 들면 :
split_list_in_n(a, 2)
[[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11]]
For N = 3:
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11]]
For N = 4:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]
For N = 5:
[[1, 2, 3], [4, 5], [6, 7], [8, 9], [10, 11]]
Python의 경우 다음이 있습니다.
def split_list_in_n(l, cols):
""" Split up a list in n lists evenly size chuncks """
start = 0
for i in xrange(cols):
stop = start + len(l[i::cols])
yield l[start:stop]
start = stop
JS의 경우 내가 생각 해낼 수있는 가장 적합한 솔루션은 재귀 함수이지만 복잡하고보기 흉해서 마음에 들지 않습니다. 이 내부 함수는 [1, 2, 3, null, 4, 5, 6, null, 7, 8]과 같은 배열을 반환 한 다음 다시 반복하고 수동으로 분할해야합니다. (내 첫 번째 시도는 다음을 반환했습니다 : [1, 2, 3, [4, 5, 6, [7, 8, 9]]], 그리고 null 구분자로하기로 결정했습니다).
function split(array, cols) {
if (cols==1) return array;
var size = Math.ceil(array.length / cols);
return array.slice(0, size).concat([null]).concat(split(array.slice(size), cols-1));
}
여기에 jsfiddle이 있습니다 : http://jsfiddle.net/uduhH/
어떻게 하시겠습니까? 감사!