Arrays 在哈希中查找值的最大值,其中数组中的键值
我有一个散列,我试图找到一个键值对的最大值,但只有当该键存在于外部数组中时 例如 应该返回2,因为我只计算在available_domains数组中找到的密钥。想知道最好的方法是什么。一个简单的方法是:Arrays 在哈希中查找值的最大值,其中数组中的键值,arrays,ruby,Arrays,Ruby,我有一个散列,我试图找到一个键值对的最大值,但只有当该键存在于外部数组中时 例如 应该返回2,因为我只计算在available_domains数组中找到的密钥。想知道最好的方法是什么。一个简单的方法是: AvailableDomains.map { |k| object[k.to_sym] }.max 下面是另一种方法: object.with_indifferent_access.values_at(*AvailableDomains).max 如果数组包含符号,则不需要with_INER
AvailableDomains.map { |k| object[k.to_sym] }.max
下面是另一种方法:
object.with_indifferent_access.values_at(*AvailableDomains).max
如果数组包含符号,则不需要with_INERTIONE_访问,但此处使用with_INERTIONE_访问,以便数组的字符串可以匹配哈希的符号键 一种可能的方法是将对象过滤到数组中的关键帧,然后从中选择最大值:
options = object.select{ |key, value| Available_domains.include?(key.to_s)}
options.max_by{|key, value| value}
一行:
object.select{ |key, value| Available_domains.include?(key.to_s)}.max_by{|key, value| value}
步骤如下:
a = Available_domains.map(&:to_sym)
#=> [:A, :B, :D]
b = object.values_at(*a)
#=> [1, 2, nil]
c = b.compact
#=> [1, 2]
c.max
#=> 2
如果
然后
如果
可用\u域=[“A”、“B”、“D”]
怎么办?我建议您只给出“一行”答案。
Available_domains = ["A", "B", "D"]
object = { A: 1, B: 2, C: 3 }
object.values_at(*Available_domains.map(&:to_sym)).compact.max
#=> 2
a = Available_domains.map(&:to_sym)
#=> [:A, :B, :D]
b = object.values_at(*a)
#=> [1, 2, nil]
c = b.compact
#=> [1, 2]
c.max
#=> 2
Available_domains = ["D", "E"]
object.values_at(*Available_domains.map(&:to_sym)).compact.max.nil?
#=> true