关于 stackoverflow 的第一个问题,我正在为这个算法苦苦挣扎。这应该像“[[0, 1], [2, 3], [4, 5], [6, 7], [8]]”一样将我的数组切成 5 个,但我得到的只是“[ [ 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]]
如果您对提问的方式有任何建议,我很乐意接受任何建议!
最佳答案
对 Array#slice
使用一个简单的 for
循环,因为 slice 不会改变原始数组的长度:
function chunkArrayInGroups(arr, size) {
var chunked = [];
for(var i = 0; i < arr.length; i += size) { // increment i by the size
chunked.push(arr.slice(i, i + size));
}
return chunked;
}
var result = chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2);
console.log(result);
关于javascript - 数组算法中的数组分块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40919092/