尝试从哈希中的二维数组中获取值并确定其最大值或最小值
这是我到目前为止所拥有的
pretend_hash = { 333 => [Dog,19.99], 222=> [Cat,25.55] }
if a == 5 # Loop for view highest priced product"
puts "View highest priced product"
puts pretend_hash.values.max
end
因此,默认情况下,这将返回数组第一部分中的最高字母值 哪个是狗。如何访问阵列的第二部分,其中25.55被声明为.max值?像pretend_hash.values.max [| k,v,z |打印z] 还是反过来?
我遇到的另一个问题是迭代第二个哈希元素并确定总和。再次调用数组中的第二个元素是我无法找到的语法。我的意思是不难说19.99 + 25.55 =一些变量并将其猛击成一个看跌期权。我假设它是这样的:
pretend_hash.sum{|k,v,z| ?? }
#I assume it iterates through the z element
#and adds all current z values and returns the sum?
答案 0 :(得分:1)
最小/最大可以这样解决:
pretend_hash.values.sort{|x,y| x[1] <=> y[1]}[0] # Gives min, -1 will be max
或者:
pretend_hash.values.map{|x| x[1]}.max
总结可以这样:
pretend_hash.values.inject(0){|sum,x| sum+x[1]}
答案 1 :(得分:1)
pretend_hash = { 333 => ["Dog",19.99], 222=> ["Cat",25.55] }
key,value = pretend_hash.max{|a,b| b[1] <=> a[1]}
puts key.to_s
puts value.join(',')
puts pretend_hash.inject(0){|sum, hash| sum + hash[1][1]}.to_s
#returns:
#222
#Cat,25.55
#45.54