根据第二个值查找内部数组的第一个值

时间:2015-06-01 23:58:51

标签: arrays ruby

我有

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

如果我有内部数组135的第二个值,那么提取第一个值的最简单方法是什么?即,

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"

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

您可以使用find方法:

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

答案 2 :(得分: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仅在值唯一时才有效。