stackoverflow的第一個問題,我正在努力與這個算法。這應該是我的數組切片5像「[[0,1],[2,3],[4,5],[6,7],[8]]」但我得到的是「[[0 ,1],[2,3],[4,5] [6,7,8]」陣列算法中的分塊數組
function chunkArrayInGroups(arr, size) {
var newArr = [];
console.log(Math.floor(arr.length/size));
for (i = 0; i <= (Math.floor(arr.length/size)) + 1; ++i) {
var cut = size;
newArr.push(arr.splice(0, cut));
}
if (arr.length > 0) {
newArr.push(arr.splice(0, size + (arr.length - size)));
}
return newArr;
}
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2);
// expected - [[0, 1], [2, 3], [4, 5], [6, 7], [8]]
如果您對問問題的方式任何提示,我會很高興收到任何建議!
歡迎** **計算器!這可能會幫助你http://stackoverflow.com/help/how-to-ask開始如何在這裏作爲一個問題在stackoverflow。 – thebenman
你的算法因爲這一行不起作用:'for(i = 0; i <=(Math.floor(arr.length/size))+ 1; ++ i){...}'witch is'for (i = 0; i <=(Math.floor(9/2))+ 1; ++ i){...}',最初'Math.floor(arr.length/size)'等於5,但是每一次執行都會通過'size'縮小'arr.length'的大小,所以現在你有了'for(i = 1; i <=(Math.floor(7/2))+ 1; ++ i){...} (i = 2; i <=(Math.floor(5/2))+ 1; ++ i){...}'和'for(i = 3; i <=(Math.floor (3/2))+ 1; ++ i){...}不會執行。所以你只做3次而不是5次。希望這是有道理的。 – brigysl
@brigysl是的,謝謝!我忘了這一個..拼接是危險的! – Mike