2014-10-08 51 views
0

例如,我有一个这样的数组:ruby​​:如何在数组中的某个键的值为0时删除散列?

array = [{"a"=>0, "b"=>1, "c"=>2}, {"a"=>2, "b"=>1, "c"=>0}, {"a"=>3, "b"=>1, "c"=>2}] 

现在我想如果"a" == 0删除的项目,返回:

array = [{"a"=>2, "b"=>1, "c"=>0}, {"a"=>3, "b"=>1, "c"=>2}] 

怎么办?

+1

若要删除一个或多个值是元素为零(即,不只是为重点' “a”'):'array.reject {| h | h.values.include?(0)} => [{“a”=> 3,“b”=> 1,“c”=> 2}]'。 – 2014-10-08 17:23:30

回答

2

使用Array#reject

array.reject { |h| h["a"] == 0 } 
#=> [{"a"=>2, "b"=>1, "c"=>0}, {"a"=>3, "b"=>1, "c"=>2}] 
+0

谢谢你如此快速的回答,并更清楚地编辑我的问题:-) – 2014-10-08 10:04:50

1

你也可以使用Array#delete_if

array.delete_if {|h| h["a"] == 0}

+2

否..它会修改原始对象。 – 2014-10-08 09:56:15

2
array.collect {|k| k unless k["a"] == 0}.compact 
+0

你能扩展你的答案来包含你的代码的解释吗?它比读者想象的更能帮助读者。 – gunr2171 2014-10-08 17:07:48

相关问题