假设我有两个数组,每个数组都包含任意数量的具有相同键但值不同的散列:
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}]
尽管有任何数字,但散列的数量总是相等的。
我怎样才能为某种类型的每个哈希找到最大的 :value_length?
例如, :type 为 0 的哈希的最大 :value_length 将是 4。 :type 为 1 的哈希的最大 :value_length 将是 8。
我只是无法解决这个问题。
如果我能以我上面描述的方式,以数据库请求式的方式得到答案,那就太好了。
目前,我正在尝试这样做:
# place all :value_length values in an array
flat_A = ArrayA.flatten.map{|h| h[:value_length]} #=> [4,8]
flat_B = ArrayB.flatten.map{|h| h[:value_length]} #=> [2,3]
但我不知道如何比较单独数组的并行结果。即(4 与 2、8 与 3)
loop_A = 0
loop_B = 0
flat_A.each do |a|
flat_B each do |b|
if loop_A == loop_B
comparisson_array << a << b
#something like this I just can't think!!!!
comparisson_array.index comparisson_array.max #=> 1
end
loop_B += 1
end
loop_A += 1
end