从Array中删除项目后获取剩余数组的最有效方法是什么?

时间:2011-03-06 09:49:40

标签: arrays ruby

Array.delete方法返回已删除的项目。

但是,如果我需要剩余的数组(不更改原始数组)怎么办?

嗯,这是一个选择:

%w(hello stack overflow !).delete_if{|x| x == 'overflow'}
# => ["hello", "stack", "!"]

我想知道是否有更好的方法,例如:

%w(hello stack overflow !).<something>('overflow')

有什么想法吗?

4 个答案:

答案 0 :(得分:6)

%w(hello stack overflow !) - %w(overflow)
=> ["hello", "stack", "!"]

答案 1 :(得分:2)

这将是

%w(hello stack overflow !).reject {|x| x == 'overflow'}

这会为你保留数组,只删除它等于'overflow'的字符串

答案 2 :(得分:1)

一种方式是这样的:

newarray = old_array.select {|item| item != "overflow"}

答案 3 :(得分:0)

irb(main):001:0> x=%w(hello stack)
=> ["hello", "stack"]
irb(main):002:0> x.delete('stack')
=> "stack"
irb(main):003:0> x
=> ["hello"]

因此,请使用delete方法。