2014-02-28 60 views
0

我有一個數組,我需要將它分成兩個,一個接一個的場景。我想分裂成兩個並行陣列

number = [1,2,3,4,5,6,7,8,9] 

我需要把它滑入兩個相似的奧雅納的回答以下

split1 = [2,4,6,8] 
split2 = [1,3,5,7,9] 
+0

嘗試使用:分割1,split2 = number.partition(?分割1) –

+1

請編輯您的帖子,它是非常混亂有關邏輯要建。 –

+0

這不是一個Rubyish代碼,因此我不會將它添加爲答案。但是您可以將它複製到您的編輯器中,並運行它並嘗試理解它。如果你這樣做,那麼@薩瓦的答案將會很清楚。儘管你的'#分區'是一個不錯的選擇。 'number = [1,2,3,4,5,6,7,8,9] split1,split2 = number.each_index.with_object(Array.new(2){[]})do | ind,ary | ind.even? ? ary [1] << number [ind]:ary [0] << number [ind] end split1#=> [2,4,6,8] split2#=> [1,3,5,7 ,9]' –

回答

2

的修改:

split1, split2 = [1,2,3,4,5,6,7,8,9].partition.with_index{|_, i| i.odd?} 
split1 # => [2, 4, 6, 8] 
split2 # => [1, 3, 5, 7, 9] 

split1, split2 = %i[a b c d e].partition.with_index{|_, i| i.odd?} 
split1 # => [:b, :d] 
split2 # => [:a, :c, :e] 
+1

OP讓我困惑,因此我做錯了答案。我會刪除我的一個.. +1給你... –

+0

你能解釋一下這裏發生了什麼{| _,i | i.odd?} – suyesh

+1

@ArupRakshit你注意到'分區'很好。我無法想出它。 – sawa

-1

可以做到這一點。例如這個爲的偶數。

my_array[1..10].each {|a| puts a if a % 2 == 0}