function chunk(arr, size) {
var awn = [];
//sets up an empty array
if(size < 0) {
return arr;
} else if(size === 1) {
for(var i = 0; i < arr.lenght; i += size) {
awn.push(arr[i]);
}
} else if(size === 2) {
for(var x = 0; x < arr.length; x += size) {
awn.push([arr[x], arr[x + 1]]);
}
} else if(size === 3) {
for(var j = 0; j < arr.length; j += size) {
awn.push([arr[j], arr[j + 1], arr[j + 2]]);
}
} else if(size === 4) {
awn.push([arr[0], arr[1], arr[2], arr[3]],[arr[4], arr[5]]);
}
return awn;
}
chunk(['a', 'b', 'c', 'd'], 2);
chunk([0, 1, 2, 3, 4, 5], 4);
这是我为了尝试解决这个问题而写的,但我认为它可以做得更优雅一点,而且它仅在大小小于 4 时才有效。
最佳答案
您可以使用化简器,并使用余数运算符可以检查何时拆分:
function chunk(arr, size) {
return arr.reduce(function(acc, x, i) {
if (i % size === 0) {
acc.push([x])
} else {
acc[acc.length-1].push(x)
}
return acc
},[])
}
chunk([0,1,2,3,4,5,6,7,8,9], 4)
//^ [[0,1,2,3], [4,5,6,7], [8,9]]
关于javascript - 将数组分割成特定大小的 block 并将它们变成多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496590/