Ruby 通过数据库请求语句访问哈希值
假设我有两个数组,每个数组包含任意数量的具有相同键但值不同的散列:Ruby 通过数据库请求语句访问哈希值,ruby,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}] 尽管有任何数字,散列的数量总是相等的 我如何才能
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_长度
例如,类型为0的散列的最大:value_长度为4。:type为1的哈希的最大:value_长度为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]
但我不知道如何比较不同阵列的并行结果。i、 e.(4加2,8加3)
loop\u A=0
循环_B=0
公寓A.每个都有|
单位B每个都有|
如果循环A==循环B
使用以下方法比较\u数组:
注意:我假设ArrayA
和ArrayB
是按类型排序的
你能再解释一下zip方法吗?我一点也不懂文件。很抱歉听起来很迟钝,但我真的不知道。对,做了一些实验。它基本上将两个数组连接到一个数组中吗P@Starkers,a.zip(b)
生成包含[[a[0],b[0]],[a[1],b[1]],…]
的新数组,例如,[1,2,3]。zip([7,8,9])
生成的[[1,7],[2,8],[3,9]
@Starkers,zip可以用于两个以上的数组。请尝试[1,2,3].zip([7,8,9],'a','b','c',['d','e','f'])
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
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]