關於如何split a JavaScript array into chunks有一個很大的問題。我目前使用這對於一些統計方法,我在寫和answer that I'm using如下(雖然我選擇了不喜歡他們的答案確實擴展Array原型):拆分數組成重疊塊(移動子組)
var chunk = function(array, chunkSize) {
return [].concat.apply([],
array.map(function(elem,i) {
return i%chunkSize ? [] : [array.slice(i,i+chunkSize)];
})
);
};
這需要一個數組,如[1,2,3,4,5,6]
,並給出chunkSize
的2個回報[[1,2],[3,4],[5,6]]
。我很好奇我如何修改這個來創建一個「重疊」塊(或者那些熟悉移動平均值,「移動子羣」等方法的人)。
提供與上面相同的陣列和3的chunkSize
,它將返回[[1,2,3],[2,3,4],[3,4,5],[4,5,6]]
。 A的chunkSize
將返回[[1,2],[2,3],[3,4],[4,5],[5,6]]
。
有關如何解決這個問題的任何想法?
有幾件事情:首先,您需要定義'var array = this;'以便在原型擴展的for循環中使用它。其次,這非常接近,但並不完全。給定'[1,2,3,4,5,6]',它返回'[[1,2],[2,3],[3,4],[4,5]]''。將'i'的最大值從'array.length - chunkSize'更改爲'array.length - chunkSize/2'雖然解決了這個問題。感謝你! – mbeasley 2013-02-20 19:31:28
你對兩個賬戶都是正確的......對不起,我沒有花很長時間證明我的工作 – gbtimmon 2013-02-20 19:35:29
實際上第二個想法'array.length - chunkSize/2'不會工作。我想你會想'array.length - (chunkSize - 1)' – gbtimmon 2013-02-20 19:36:53