通过数据库请求-queque语句访问哈希值

时间:2013-10-08 16:58:44

标签: 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}]

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

我怎样才能找到某个类型的每个哈希值的最大值: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

1 个答案:

答案 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]

注意:我认为ArrayAArrayBtype排序。