2013-05-04 1 views
0

배열을 값의 그룹으로 분할하여 끝에 시작하고 다시 시작 배열로 남기고 싶습니다. 다음은 목표의 예입니다.X 값마다 배열을 효율적으로 끊으시겠습니까?

arr = [0,1,2,3,4,5,6,7,8,9,10,11] 
interval = 5 
#chop 
output = [[0,1],[2,3,4,5,6],[7,8,9,10,11]] 

가장 효율적인 방법은 무엇입니까?

어떤 도움을 주셔서 감사합니다.

+1

"Array.slice" – Ian

+0

@Ian Ok, 정보 주셔서 감사합니다. – boom

+0

[Split array into chunks] 가능한 복제본 (http://stackoverflow.com/questions/8495687/split-array-into-chunks) – Mogsdad

답변

2
var arr = [0,1,2,3,4,5,6,7,8,9,10,11], 
    interval = 5, 
    output = []; 

while (arr.length >= interval) { 
    output.unshift(arr.splice(-interval, interval)); 
} 
output.unshift(arr); 

console.log(output); 
+1

+1, 원래 배열을 수정하는 것은 불필요한 작업이지만 (우리가 아는 한, 다른 이유로는 바람직하지 않습니다). 하지만 두 번째 인수를 유추하는 것은 SpiderMonkey 확장 (표준이 아님)이므로 호환성을 위해서는'splice (-interval, interval) '이 필요합니다. –

+0

그리고 너는 너무 많은 검사를하고있는 것 같다. - http://jsfiddle.net/tVvJP/ – Ian

+0

@ T.J.Crowder 앞서 언급 한'.splice()'의 길이 부분을 추가했다. 원래 어레이의 경우. 당신 말이 맞아요. 그러나 어쩌면 이것이 깨질 수 있으므로 더 이상 필요하지 않을 수도 있습니다. – Andreas

3

CoffeeScript를 말할 수는 없지만 JavaScript에서는 특별히 그런 일이 없다고 생각합니다. slice 전화가 필요합니다. 음수 인덱스 ("끝에서부터"를 의미)를 사용하여 역순으로 반복하거나 첫 번째 패스에서 첫 번째 src.length % interval 항목 만 가져옵니다.

+0

좋아, 아마 조각을 사용합니다. 감사합니다 – boom

-1

반전. 일부분. 푸시. 역.

관련 문제