0

是否有一个辅助方法可以从数组中删除所有项目并在 ruby​​ 中返回这些项目?

例如,

array = [{:a=>1, :b=>2},{:a=>3,:b=>4},{:a=>5,:b=>6}]

我想删除所有数组元素并返回它们,以便我可以对这些元素进行一些处理?

4

2 回答 2

2

使用以下方法Array#shift一次性删除数组内容并返回其元素:

array = [{:a=>1, :b=>2},{:a=>3,:b=>4},{:a=>5,:b=>6}]
array.shift(array.size)
# => [{:a=>1, :b=>2}, {:a=>3, :b=>4}, {:a=>5, :b=>6}]
array
# => []

如果要一个一个删除,可以使用以下方法Array#delete_if

array = [{:a=>1, :b=>2},{:a=>3,:b=>4},{:a=>5,:b=>6}]
array.delete_if do |e|
    #do your work with e
    true
end
array # => []

另一种方法是先处理数组,然后从数组中删除所有元素:

array = [{:a=>1, :b=>2},{:a=>3,:b=>4},{:a=>5,:b=>6}]
array.each do |e|
    #do your work with e
end
array.clear
array # => []
于 2013-09-27T22:36:08.160 回答
2
array = [{:a=>1, :b=>2},{:a=>3,:b=>4},{:a=>5,:b=>6}]
while element = array.pop do
  # process element however you like...
end
array    # => []

或使用shift而不是pop订单对您很重要。

于 2013-09-27T22:45:11.570 回答