找到具有公共密钥的哈希数组的最大值?

Sta*_*ers 7 ruby

我有两个数组,每个数组包含任意数量的具有相同键但具有不同值的哈希:

ArrayA = [{value: "abcd", value_length: 4, type: 0},{value: "abcdefgh", value_length: 8, type: 1}]
ArrayB = [{value: "ab", value_length: 2, type: 0},{value: "abc", value_length: 3, type: 1}]
Run Code Online (Sandbox Code Playgroud)

尽管有任何数字,但哈希的数量总是相等的.

如何:value_length为每个值为特定类型的哈希找到最大值?

例如,:value_lengtha :type为0 :value_length的散列的最大值为4. 对于a :type为1 的散列,最大值为8.

我无法理解这个问题.

hir*_*lau 13

一个简单的方法:

all = ArrayA + ArrayB # Add them together if you want to search both arrays.
all.select{|x| x[:type] == 0}
   .max_by{|x| x[:value_length]}
Run Code Online (Sandbox Code Playgroud)

如果你想重用它,只需创建一个函数:

def find_max_of_my_array(arr,type)
  arr.select{|x| x[:type] == type}
     .max_by{|x| x[:value_length]}
end

p find_max_of_my_array(ArrayA, 0) # => {:value=>"abcd", :value_length=>4, :type=>0}
Run Code Online (Sandbox Code Playgroud)