Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个条件的Ruby select_Ruby - Fatal编程技术网

具有多个条件的Ruby select

具有多个条件的Ruby select,ruby,Ruby,我有一个哈希数组: [{"green" => 1, "red" => 2, "blue" => 3}, {"green" => 4, "red" => 5, "blue" => 6}] 我想选择红色、蓝色或绿色等于某个数字的哈希。如果我理解正确,我该怎么做呢? arr = [{"green" => 1, "red" => 2, "blue" => 3}, {"green" => 4, "red" => 5, "blue" =&g

我有一个哈希数组:

[{"green" => 1, "red" => 2, "blue" => 3}, {"green" => 4, "red" => 5, "blue" => 6}]

我想选择红色、蓝色或绿色等于某个数字的哈希。如果我理解正确,我该怎么做呢?

arr = [{"green" => 1, "red" => 2, "blue" => 3}, {"green" => 4, "red" => 5, "blue" => 6}]
some_number = 1
arr.select { |el| el.any? {|k,v| v == some_number} }
改进版:

arr.select { |el| a.has_value?(some_number) }
版本,如果可能有更多不需要测试的密钥(示例中为黄色):


如果要在任何键的值等于
n

 arr.select{|h| h.values.include? n}
选择指定键的值之一是否等于
n

 arr.select{|h| h.select{|k,v| ("red","green","blue").include? k && v == n}
我将用于获取和您感兴趣的键相关联的值数组:

arr = [{"green" => 1, "red" => 2, "blue" => 3}, {"green" => 4, "red" => 5, "blue" => 6}]
arr.select { |h| h.values_at("red", "green", "blue").include? 1 }

我试过三次使用select,但我想知道我是否可以在一行中完成这项工作。
。slice
是由ActiveSupport添加的,在纯ruby中不可用。此外,您还必须
符号化您的按键。我添加了改进版本。请注意,如果将任何其他颜色添加到哈希中,这可能会中断,但它们的值不应包含在任何?-logicAgree添加的版本中。这是一个很好的解决方案!由于原始问题只需要散列,因此我将使用find方法而不是select方法。没有数组,稍微短一点。很好的解决方案。我仍然对有多少可枚举/哈希/数组方法感到惊讶。
arr = [{"green" => 1, "red" => 2, "blue" => 3}, {"green" => 4, "red" => 5, "blue" => 6}]
arr.select { |h| h.values_at("red", "green", "blue").include? 1 }