是否有一种内置方法可以根据 block 条件返回 true 从数组中删除一个值,并返回被删除的值?
这是我正在尝试做的事情的简化版本,但似乎必须有更好的方法:
array = [1,2,3,4,5,6,7,8,9,10]
index = array.index {|v| v == 5} # returns index if block is true
value = array.delete_at(index) # deletes and returns element at index
value
是 5
最佳答案
您无法就地更新数组并返回一组已删除的不同值。您可以使用 delete_if
执行以下操作以删除值并捕获 block 中逻辑删除的值:
reject = []
=> []
content = [1,2,3,4,5,6,7,8,9]
=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
content.delete_if {|v| reject << v if v > 5}
=> [1, 2, 3, 4, 5]
reject
=> [6, 7, 8, 9]
content
=> [1, 2, 3, 4, 5]
关于ruby-on-rails - Ruby:根据 block 查找条件删除并返回数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5480329/