2011-10-19 22 views
7

posible duplicado:
How to split (chunk) a Ruby array into parts of X elements?Dividir una matriz en algunos sub-arrays

me gustaría dividir una matriz en una serie de sub-arrays.

Por ejemplo,

big_array = (0...6).to_a 

¿Cómo podemos reducir esta gran matriz en una matriz de matrices (de una longitud máxima de 2 artículos) tales como:

arrays = big_array.split_please(2) 

Dónde ...

arrays # => [ [0, 1], 
       [2, 3], 
       [4, 5] ] 

Nota: hago esta pregunta, porque con el fin de hacerlo, estoy actualmente codificación de la siguiente manera:

arrays = [ 
      big_array[0..1], 
      big_array[2..3], 
      big_array[4..5] 
     ] 

... que es tan feo. Y código muy poco sostenible, cuando big_array.length > 100.

Respuesta

14

puede utilizar el método de #each_slice en la matriz

big_array = (0..20).to_a 
array = big_array.each_slice(2).to_a 
puts array # [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9], [10, 11], [12, 13], [14, 15], [16, 17], [18, 19], [20]] 
+0

cómo no es lo mismo como mi 'rebanada'? :) – tolitius

+0

Gracias, simplemente perfecto. Aprenderé más seriamente la API de Ruby o_o; –

6

salida la slice:

big_array.each_slice(2).to_a 
+0

... Oh, Dios mío, gracias :) –

Cuestiones relacionadas