2011-10-19 25 views
7

thể trùng lặp:
How to split (chunk) a Ruby array into parts of X elements?Chia một mảng vào một số tiểu mảng

Tôi muốn chia một mảng thành một mảng của phụ mảng.

Ví dụ,

big_array = (0...6).to_a 

Làm sao chúng ta có thể cắt mảng lớn này thành một mảng của mảng (có chiều dài tối đa của 2 mặt hàng) như:

arrays = big_array.split_please(2) 

đâu ...

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

Lưu ý: Tôi đặt câu hỏi này, vì để làm điều đó, tôi hiện đang viết mã như sau:

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

... quá xấu xí. Và mã không thể duy trì được, khi big_array.length > 100.

Trả lời

14

Bạn có thể sử dụng phương pháp #each_slice trên mảng

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

thế nào là nó không giống nhau như 'slice' của tôi? :) – tolitius

+0

Cảm ơn, chỉ cần hoàn hảo. Tôi sẽ học nghiêm túc hơn về API của Ruby o_o; –

6

séc ra slice:

big_array.each_slice(2).to_a 
+0

Oh ... my god, nhờ :) –

Các vấn đề liên quan