2012-07-03 48 views
52

如何将数组(其中包含10个项目)拆分为4个块,其中包含最多n个项目。将数组拆分为N长度的块

var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']; 
//a function splits it to four arrays. 
console.log(b, c, d, e); 

而且它打印:

['a', 'b', 'c'] 
['d', 'e', 'f'] 
['j', 'h', 'i'] 
['j'] 

上面假定n = 3,然而,该值应是动态的。

感谢

+4

你尝试过什么? – Don

+0

不,我刚刚阅读'切片'和'splice'文档.. – mrdaliri

+2

重复的问题,请参阅http://stackoverflow.com/a/10456644/1361399 –

回答

150

这可能是类似的东西:

var arrays = [], size = 3; 

while (a.length > 0) 
    arrays.push(a.splice(0, size)); 

console.log(arrays); 

splice阵列的方法。

41

也许这个代码可以帮助:

var chunk_size = 10; 
var arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]; 
var groups = arr.map(function(e,i){ 
    return i%chunk_size===0 ? arr.slice(i,i+chunk_size) : null; 
}) 
.filter(function(e){ return e; }); 
+5

我喜欢你的解决方案。我把它清理了一下,并把它变成了一个JS Bin。谢谢! http://jsbin.com/dokivomuzake/1/edit?js,console – dbasch

+0

更好的功能解决方案。 –

+3

'常量partitionArray =(数组,大小)=> array.map(?(E,I)=>(ⅰ%大小=== 0) array.slice(I,I +大小) :空 ) .filter((e)=> e)' – ztrange