2015-06-01 112 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"