假设我有两个数组,每个数组包含任意数量的具有相同键但值不同的哈希值:
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?
例如,a:type为0的散列的最大:value_length为4.对于a: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
答案 0 :(得分:0)
使用Array#zip
:
ArrayA = [{value_length: 4, type: 0},{value_length: 8, type: 1}]
ArrayB = [{value_length: 2, type: 0},{value_length: 3, type: 1}]
ArrayA.zip(ArrayB).map {
|a, b| [a[:value_length], b[:value_length]].max
} # => [4, 8]
注意:我认为ArrayA
和ArrayB
按type
排序。