2013-05-04 32 views
0

我想將一個數組拆分爲一組值,並從頭開始,並將其作爲一個remander數組。這是一個目標的例子:每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 2013-05-04 07:49:53

+0

@Ian好吧,謝謝你的信息。 – boom 2013-05-04 07:52:32

+0

[將數組拆分成塊]可能的重複(http://stackoverflow.com/questions/8495687/split-array-into-chunks) – Mogsdad 2015-12-07 15:42:53

回答

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)'。 – 2013-05-04 08:08:40

+0

而你似乎在做太多的檢查 - http://jsfiddle.net/tVvJP/ – Ian 2013-05-04 08:12:22

+0

@ T.J.Crowder如上所述添加了'.splice()'的長度部分。併爲原始數組。你是對的,但也許在分手後不再需要,所以也許這可以解決。 – Andreas 2013-05-04 08:17:32

3

不能說CoffeeScript,但在JavaScript中我不認爲有任何具體的事情,你只需要一個slice調用循環。或者使用負數索引(意思是「從結尾」)向後循環,或者在第一階段採用第一個src.length % interval項目。

+0

好的,可能會使用切片。謝謝 – boom 2013-05-04 07:52:49

-1

反向。片。推。相反。

相關問題