Ruby on rails 检查散列中的值

Ruby on rails 检查散列中的值,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在从事一个使用Ruby 1.8的遗留Rails项目 我有一个键值的散列,其中value是一个浮点数 例如,my_hash=['foo'=>12.20,'bar'=>10.0]。如何检查my_hash是否包含所有零值?e、 g.['foo'=>0,'bar'=>0,'whatever'=>0]或['foo'=>0.0,'bar'=>0,'whatever'=>0.0] 我知道我可以逐个循环检查元素,但我只是想知道有没有更优雅的方法?如果我的\u散列是: [{“foo”=>0.0,“bar”=>

我正在从事一个使用Ruby 1.8的遗留Rails项目

我有一个键值的散列,其中value是一个浮点数

例如,
my_hash=['foo'=>12.20,'bar'=>10.0]
。如何检查
my_hash
是否包含所有零值?e、 g.
['foo'=>0,'bar'=>0,'whatever'=>0]
['foo'=>0.0,'bar'=>0,'whatever'=>0.0]


我知道我可以逐个循环检查元素,但我只是想知道有没有更优雅的方法?

如果我的\u散列是:
[{“foo”=>0.0,“bar”=>0,“随便”=>0.0}]

my_hash.first.values.all?{|item| item.zero?}

或者,如果我的_散列是数组,则只需:

my_hash.all?{|item| item.zero?}

检查哈希中的所有值是否为零

 2.2.3 :006 > h={"foo"=>0.0, "bar"=>0, "whatever"=>0.0}
      => {"foo"=>0.0, "bar"=>0, "whatever"=>0.0} 
 2.2.3 :007 > h.values.all?{|a| a.zero?}
      => true
如果它是一个散列数组,那么

2.2.3 :001 > h = ['foo'=>0.0, 'bar'=>0, 'whatever'=>0.0]
 => [{"foo"=>0.0, "bar"=>0, "whatever"=>0.0}] 
2.2.3 :004 > h[0].values.all?{|a| a.zero? }
 => true

任何元素都是零

2.2.3 :009 > h={"foo"=>0.0, "bar"=>2, "whatever"=>1.1}
 => {"foo"=>0.0, "bar"=>2, "whatever"=>1.1} 
2.2.3 :010 > h.values.any?{|a| a.zero?}
 => true 
2.2.3 :011 > h={"foo"=>0.2, "bar"=>2, "whatever"=>1.1}
 => {"foo"=>0.2, "bar"=>2, "whatever"=>1.1} 
2.2.3 :012 > h.values.any?{|a| a.zero?}
 => false 

my_hash.values
提供一个数组;然后,根据您前面的问题:
my_hash.values.all?(&:zero?)
。或者,
my_hash.all?{| k,v | v.zero?}
.Amadan会来给你同样的答案
.values
我的hash
哈哈,不错。非常接近。。。10秒
['foo'=>12.20,'bar'=>10.0]
创建一个包含散列的数组。它相当于
[{'foo'=>12.20,'bar'=>10.0}]
而您可能想要
{'foo'=>12.20,'bar'=>10.0}
为什么首先调用
?我想您的my_散列变量是:
[{'foo'=>0.0,“bar'=>0”,随便什么“=>0.0}
2.2.3 :009 > h={"foo"=>0.0, "bar"=>2, "whatever"=>1.1}
 => {"foo"=>0.0, "bar"=>2, "whatever"=>1.1} 
2.2.3 :010 > h.values.any?{|a| a.zero?}
 => true 
2.2.3 :011 > h={"foo"=>0.2, "bar"=>2, "whatever"=>1.1}
 => {"foo"=>0.2, "bar"=>2, "whatever"=>1.1} 
2.2.3 :012 > h.values.any?{|a| a.zero?}
 => false