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的情况下它才有效。
答案 0 :(得分:2)
您可以使用reducer,使用余数运算符可以检查何时分割:
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]]