【发布时间】:2011-04-01 07:41:38
【问题描述】:
我有一个包含 500 个元素的数组。我知道我可以通过 .first(100) 选择前 100 个,我的问题是如何选择从 100 到 200 的元素?
【问题讨论】:
我有一个包含 500 个元素的数组。我知道我可以通过 .first(100) 选择前 100 个,我的问题是如何选择从 100 到 200 的元素?
【问题讨论】:
您可以在数组下标中使用范围:
arr[100..200]
【讨论】:
.. 的范围代表最后一个数字的 inclusive 范围,而三个点 ... 是 exclusive。所以(1..4) 是 1,2,3,4 而(1...4) 是 1,2,3
arr[1..] 怎么样?这也对我从索引 1 到最后一个索引进行选择,但我不知道这是否正确。因为然后RuboCop 在RubyMine 上警告我。
你可以这样做:
array[100..200] # returns the elements in range 100..200
# or
array[100,100] # returns 100 elements from position 100
【讨论】:
dvcolgan 的回答是正确的,但听起来您可能正在尝试将数组分成 100 个组。如果是这种情况,有一个方便的内置方法:
nums = (1..500).to_a
nums.each_slice(100) do |slice|
puts slice.size
end
# => 100, 100, 100, 100, 100
【讨论】:
sample_array = (1..500).to_a
elements_100_to_200 = sample_array[100..200]
您可以将范围作为索引传递给数组,并从该子范围中获取包含查询元素的子数组。
【讨论】:
new_array = old_array.first(200) - old_array.first(100)
【讨论】: