例如,我有一个这样的数组: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}]
怎么办?
例如,我有一个这样的数组: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}]
怎么办?
使用Array#reject
:
array.reject { |h| h["a"] == 0 }
#=> [{"a"=>2, "b"=>1, "c"=>0}, {"a"=>3, "b"=>1, "c"=>2}]
谢谢你如此快速的回答,并更清楚地编辑我的问题:-) – 2014-10-08 10:04:50
你也可以使用Array#delete_if
array.delete_if {|h| h["a"] == 0}
否..它会修改原始对象。 – 2014-10-08 09:56:15
array.collect {|k| k unless k["a"] == 0}.compact
你能扩展你的答案来包含你的代码的解释吗?它比读者想象的更能帮助读者。 – gunr2171 2014-10-08 17:07:48
若要删除一个或多个值是元素为零(即,不只是为重点' “a”'):'array.reject {| h | h.values.include?(0)} => [{“a”=> 3,“b”=> 1,“c”=> 2}]'。 – 2014-10-08 17:23:30