如何在Ruby中删除满足数组条件的所有元素?

Cha*_*han 45 ruby

我怎样才能在Ruby中实现它?有没有一行代码技术?假设我想摆脱小于3的整数数组的所有元素.

sep*_*p2k 63

您可以使用new_array = array.reject {|x| x < 3}(reject返回一个新数组)或array.reject! {|x| x < 3}(reject!也就是delete_if修改数组).

还有(稍微更常见)的select方法,reject除了你指定保留元素的条件,而不是拒绝它们(即去除小于3的元素,你会使用new_array = array.select {|x| x >= 3})之外的行为.

  • Ruby的[`#delete_if`](http://ruby-doc.org/core-2.2.0/Array.html#method-i-delete_if)和[`#reject!`](http:// ruby​​-doc .org/core-2.2.0/Array.html#method-i-reject-21)略有不同.`reject !`如果没有更改项,则返回`nil`,并在每次调用块时更改数组. (2认同)

kte*_*tec 14

可能值得指出这一点

array.reject! {|x| x < 3}
Run Code Online (Sandbox Code Playgroud)

array.delete_if {|x| x < 3}
Run Code Online (Sandbox Code Playgroud)

是一样的,但是

array.reject {|x| x < 3}
Run Code Online (Sandbox Code Playgroud)

仍将返回相同的结果,但不会更改"数组".


Fer*_*ido 8

  a = [ "a", "b", "c" ]
  a.delete_if {|x| x >= "b" }   #=> ["a"]
Run Code Online (Sandbox Code Playgroud)