非破坏性地从阵列中删除元素

时间:2017-07-18 15:39:02

标签: arrays ruby ruby-1.9

给定一个数组arr和一个对象v,我想要一份arr的副本,其元素不等于v

我找到了这两个解决方案:

newarr = arr.dup
newarr.delete(v)

newarr = arr.reject {|a| a == v}

有更简单的方法吗?

我想知道Ruby是否已经有类似的东西:

newarr = arr.without(v)

1 个答案:

答案 0 :(得分:9)

[1, 2, 3, 4, 4, 5, 5] - [4]
#⇒ [1, 2, 3, 5, 5]

如果这对您来说太麻烦,请使用:

[1, 2, 3, 4, 4, 5, 5].reject(&4.method(:==))
#⇒ [1, 2, 3, 5, 5]