是否有一个辅助方法可以从数组中删除所有项目并在 ruby 中返回这些项目?
例如,
array = [{:a=>1, :b=>2},{:a=>3,:b=>4},{:a=>5,:b=>6}]
我想删除所有数组元素并返回它们,以便我可以对这些元素进行一些处理?
是否有一个辅助方法可以从数组中删除所有项目并在 ruby 中返回这些项目?
例如,
array = [{:a=>1, :b=>2},{:a=>3,:b=>4},{:a=>5,:b=>6}]
我想删除所有数组元素并返回它们,以便我可以对这些元素进行一些处理?
使用以下方法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 # => []
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
订单对您很重要。