キーが外部配列に存在する場合のみ、キーと値のペアの最大値を見つけようとしているハッシュがあります。ハッシュの値の最大値を求める配列のキー値
など。
Available_domains = ["A", "B"]
object = {
A: 1,
B: 2,
C: 3
}
私はavailable_domains配列にあるキーを計算しているので、2を返す必要があります。それを行う最善の方法が何であるか不思議です。
キーが外部配列に存在する場合のみ、キーと値のペアの最大値を見つけようとしているハッシュがあります。ハッシュの値の最大値を求める配列のキー値
など。
Available_domains = ["A", "B"]
object = {
A: 1,
B: 2,
C: 3
}
私はavailable_domains配列にあるキーを計算しているので、2を返す必要があります。それを行う最善の方法が何であるか不思議です。
簡単な方法はこれです:配列のシンボルが含まれていた場合、with_indifferent_accessが不要になり
object.with_indifferent_access.values_at(*AvailableDomains).max
が、そのので、ここで使われています:
AvailableDomains.map { |k| object[k.to_sym] }.max
は、ここでそれを行うための別の方法です配列の文字列は、ハッシュのシンボルキーと一致することができます。
1つの可能な方法は、それから、最大を選択し、アレイ内にあるだけキーにオブジェクトをフィルタリングすることである。
object.select{ |key, value| Available_domains.include?(key.to_s)}.max_by{|key, value| value}
私は、あなたは "1行で"答えを与えることをお勧めします。 –
Available_domains = ["A", "B", "D"]
object = { A: 1, B: 2, C: 3 }
object.values_at(*Available_domains.map(&:to_sym)).compact.max
#=> 2
:一列に
options = object.select{ |key, value| Available_domains.include?(key.to_s)}
options.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
Available_domains = ["D", "E"]
次いで
object.values_at(*Available_domains.map(&:to_sym)).compact.max.nil?
#=> true
何 'Available_domains = [ "A"、 "B"、 "D"]'もし? –