ruby-on-rails - Ruby:根据 block 查找条件删除并返回数组值

标签 ruby-on-rails ruby arrays

是否有一种内置方法可以根据 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/

相关文章:

ruby-on-rails - 如何配置 RSpec 以在 lib 文件夹中查找规范?

ruby-on-rails - 让 ng-token-auth 与 devise_token_auth 一起工作

ruby - 在 ruby​​ 中,你将相关符号(如 java 中的枚举)放在哪里?

ruby - 我如何优化这段 ruby​​ 代码以使其运行得更快?

ruby - 学习Ruby的好地方是什么?它主要用于什么?

Java - 在随机数组中搜索元素

c - 在不使用 string.h 的情况下逐字打印 C 中的一个句子

ruby-on-rails - AWS::S3::错误::访问拒绝。无法使用 Ruby on Rails 保存到 S3

c - 为什么只有算术运算打印出一个值而不是一个正常的值

ruby-on-rails - 如何将 session cookie 的 HttpOnly 设置为 false?