2012-07-03 19 views
52

Come dividere un array (che contiene 10 elementi) in 4 blocchi, che contengono un massimo di n elementi.Divisione di array in blocchi di lunghezza 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); 

E la stampa:

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

È possibile che questo assume n = 3, tuttavia, il valore dovrebbe essere dinamico.

Grazie

+4

Hai provato qualche cosa ?? – Don

+0

No, ho appena letto i documenti 'slice' e' splice' .. – mrdaliri

+2

Domande duplicate, vedi risposta: http://stackoverflow.com/a/10456644/1361399 –

risposta

150

potrebbe essere qualcosa di simile:

var arrays = [], size = 3; 

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

console.log(arrays); 

veda il metodo splice di Array.

41

Forse questo codice consente:

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

Mi piace la tua soluzione. L'ho ripulito un po 'e l'ho trasformato in un JS Bin. Grazie! http://jsbin.com/dokivomuzake/1/edit?js,console – dbasch

+0

Soluzione funzionale molto migliore. –

+3

'const partitionArray = (array, size) => array.map ((e, i) => (i% size === 0) ? Array.slice (i, i + size) : null ) . Filtro ((e) => e) ' – ztrange

Problemi correlati