2010-02-02 3 views
5

J'ai ce cours:Y at-il un Ruby 1.8.7 intégré pour diviser un tableau en sous-réseaux de même taille?

def split_array(array,size) 
    index = 0 
    results = [] 
    if size > 0 
     while index <= array.size 
      res = array[index,size] 
      results << res if res.size != 0 
      index += size 
     end 
    end 
    return results 
end 

Si je l'exécute sur [1,2,3,4,5,6] comme split_array([1,2,3,4,5,6],3) il produira ce tableau:

[[1,2,3],[4,5,6]]. Est-ce qu'il y a quelque chose de déjà disponible qui peut le faire, dans Ruby 1.8.7?

+0

double possible de [Nécessité de diviser les tableaux à sous-réseaux de taille spécifiée dans Ruby] (http://stackoverflow.com/questions/3864139/need- to-split-arrays-to-sub-arrays-de-specified-size-in-ruby) – Nakilon

Répondre

10
[1,2,3,4,5,6].each_slice(3).to_a 
#=> [[1, 2, 3], [4, 5, 6]] 

Pour 1.8.6:

require 'enumerator' 
[1,2,3,4,5,6].enum_for(:each_slice, 3).to_a 
+0

+1 Bien, vous me battez à ma réponse. :-P –

+0

Merci pour la réponse! Cependant ... je suis stupide :). J'ai en fait 1.8.6. Vous savez quelque chose pour ça aussi? – Geo

+0

Bonne réponse. Solution alternative pour Ruby 1.8.6 si 'require 'backports'' qui va définir' each_slice'. –

Questions connexes