2015-06-01 114 views
0

内部数组的第一个值我有查找基于第二值

@array = [ 
    ["Single - Tuesday - $13/meal", 1], 
    ["Trifecta - Mon, Wed, Fri - $12/meal", 3], 
    ["Quinary - Every weekday - $11/meal", 5] 
] 

如果我有内部数组的第二个值13,或5,什么是拉的第一个值的最简单的方法是什么?即,

some_method_or_whatever(1) # => "Single - Tuesday - $13/meal" 
some_method_or_whatever(3) # => "Trifecta - Mon, Wed, Fri - $12/meal" 
some_method_or_whatever(5) # => "Quinary - Every weekday - $11/meal" 
+0

为什么急于选择答案? –

回答

1

可以使用find方法:

@array.find{|sub_array| sub_array[1] == <your value here>}.try(:first) 
0

将是唯一的第二个值?为什么不是哈希?

hash = 
    {1 => "Single - Tuesday - $13/meal", 
    3 => "Trifecta - Mon, Wed, Fri - $12/meal", 
    5 => "Quinary - Every weekday - $11/meal"} 

hash[1], hash[3] etc 

但是,如果它必须是你要求做的数字遵循相同的模式和立场?即1,3,5,7,9等?如果这样@array.flatten[value]将工作。

否则@array[@array.flatten.find_index(5)-1],但只有值是唯一的,obv才有效。

+0

您错过了一个步骤:将给定的数组转换为您的哈希,例如'hash = @ array.to_h.invert'。 –

4
@array.rassoc(1).first 
# => "Single - Tuesday - $13/meal"