ruby:如果一个键';数组中的s值是否为0?

ruby:如果一个键';数组中的s值是否为0?,ruby,arrays,hash,Ruby,Arrays,Hash,例如,我有这样一个数组: 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}] 如何做?使用: 使用: 如果 arra

例如,我有这样一个数组:

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.delete_如果{h | h[“a”]==0}
如果

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

array.delete_如果{h | h[“a”]==0}

No..它将改变原始对象。No..它将改变原始对象。谢谢你这么快的回答并更清楚地编辑了我的问题:-)谢谢你这么快的回答并更清楚地编辑了我的问题:-)你能扩展你的答案以包括对代码的解释吗?它对读者的帮助比你想象的要多。你能扩展你的答案,包括对代码的解释吗?它对读者的帮助比你想象的要大。要删除一个或多个值为零的元素(即,不仅仅是键
“a”
):
array.reject{h | h.values.include?(0)}=>[{“a”=>3,“b”=>1,“c”=>2}]
。要删除一个或多个值为零的元素(即,不仅仅是键
“a”
):
array.reject{| h | h.values.include?(0)}=>[{“a”=>3,“b”=>1,“c”=>2}]
array.collect {|k| k unless k["a"] == 0}.compact