2010-02-02 7 views
5

Mam ten zamiar:Czy jest wbudowany Ruby 1.8.7, aby podzielić tablicę na subarray o tej samej wielkości?

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 

Jeśli uruchomić go na [1,2,3,4,5,6] jak split_array([1,2,3,4,5,6],3) będzie produkować tej tablicy:

[[1,2,3],[4,5,6]]. Czy jest coś, co może to zrobić, w Rubim 1.8.7?

+0

możliwe duplikat [trzeba podzielić tablic do tablic podrzędnych określonej wielkości Ruby] (http://stackoverflow.com/questions/3864139/need- to-split-array-to-sub-arrays-of-specified-size-in-ruby) – Nakilon

Odpowiedz

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

Na 1.8.6:

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

+1 Miło, pobiłeś mnie do mojej odpowiedzi. :-P –

+0

Dzięki za odpowiedź! Jednak ... jestem głupi :). Rzeczywiście mam 1.8.6. Wiesz też coś o tym? – Geo

+0

Dobra odpowiedź. Alternatywne rozwiązanie dla Ruby 1.8.6, jeśli chcesz "wymagać" backportów, które definiują 'each_slice'. –

Powiązane problemy