根据属性值从 Ruby 数组中删除对象

5
我有一个数组: result = [{:cluster=>[0, 4], :id=>1, :units=>346, :num1=>0.161930681e7, :num2=>0.14223512616e9, "description"=>"Foo"}, { ... 我想要移除所有单位数为0的对象。寻找与array.splice()类似,但适用于Ruby的最佳方式是什么?
2个回答

6
你可以使用#reject方法来返回没有:units等于0的对象的数组:
result.reject { |hash| hash[:units] == 0 }

还有 #reject!#delete_if,可以像上面一样使用,但两者都会直接修改数组。

希望这可以帮到你!


0
你可以使用实现在Array类上的select方法来达到相同的结果:

result.select { |el| el[:units] == 0 }


这似乎是如何创建一个新数组,其中包含单位为0的对象。 - aabiro
啊,我明白你想要什么了。你想要摆脱单位为0的对象,而不是这些对象的数组。你是对的。 - jedi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接