2010-08-19 10 views
21

Mam tablicę z powiedzmy 500 elementów. Wiem, że mogę wybrać pierwsze 100 wykonując .first(100), moje pytanie brzmi: jak wybrać elementy od 100 do 200?Jak wybrać elementy tablicy w danym zakresie w Ruby?

+0

możliwy duplikat [Zwracanie części tablicy w Ruby] (http://stackoverflow.com/questions/695290/returning-a-part-of-an-array-in-ruby) –

Odpowiedz

42

Można używać zakresów w indeksie tablicy: odpowiedź

arr[100..200] 
+3

Możesz również wykonywać ujemne zakresy: arr [100 ..- 50] otrzyma 100 element przez 450 element, w przypadku macierzy 500 elementów. –

+0

Dobra odpowiedź, dziękuję! :) – Vinozio

-3
new_array = old_array.first(200) - old_array.first(100) 
+0

To sprawia, że sens :). Zastanawiam się, czy istnieje metoda dla tego – deb

+0

To tworzy dwie tymczasowe tablice, a następnie robi ustawioną różnicę ... nie przestrzeń i czas wydajne, myślę. – DarkDust

+0

twoje prawo. Jestem na wygranej i nie mam rubinu, więc nie mogłem wypróbować innych rozwiązań w irb. Myślałem także o array.find (100..200), ale nie wiem, czy akceptuje zakresy. Wypróbuj to. – s84

2
sample_array = (1..500).to_a 
elements_100_to_200 = sample_array[100..200] 

Możesz przechodzić szereg jako indeks do tablicy i uzyskać subarray z poszukiwana elementów z tego zakresu.

13

Można to zrobić tak:

array[100..200] # returns the elements in range 100..200 
# or 
array[100,100] # returns 100 elements from position 100 

More Information

10

dvcolgan jest w porządku, ale to brzmi jak ty może próbuj rozbić tablicę na grupy po 100. Jeśli tak jest, istnieje wygodna wbudowana metoda:

nums = (1..500).to_a 

nums.each_slice(100) do |slice| 
    puts slice.size 
end 

# => 100, 100, 100, 100, 100 
Powiązane problemy