J'ai un tableau de tableaux dans Ruby on Rails (3.1) où tous les tableaux internes sont de taille différente. Existe-t-il un moyen de concaténer facilement tous les tableaux internes pour obtenir un grand tableau dimesional avec tous les éléments?
Je sais que vous pouvez utiliser la fonction Array :: concat pour concaténer deux tableaux, et je pourrais faire une boucle pour les concaténer séquentiellement comme suit:
concatenated = Array.new
array_of_arrays.each do |array|
concatenated.concat(array)
end
mais je voulais savoir s'il y avait comme un Ruby one-liner qui le ferait d'une manière plus propre.
Merci de votre aide.
Vous cherchez #flatten
:
concatenated = array_of_arrays.flatten
Par défaut, cela aplatira les listes récursivement. #flatten
accepte un argument facultatif pour limiter la profondeur de récursivité - la documentation répertorie des exemples pour illustrer la différence.
Ou plus généralement:
array_of_arrays.reduce(:concat)
Vous pouvez utiliser aplatir! méthode. par exemple. a = [ 1, 2, [3, [4, 5] ] ] a.flatten! #=> [1, 2, 3, 4, 5]