我有一个二维数组,如下所示:
TITLETYPE = [['Prof.', '4'],
['Dr.', '3'],
['Mrs.', '2'],
['Ms.', '1'],
['Mr.', '0']]
我需要获取值1的键(例如,应该是'Ms.') 我应该怎么做呢?
答案 0 :(得分:8)
TITLETYPE.select{ |x| x[1] == '1' }.first.first
您可以使用Array
的select
方法查找您要查找的行。你的行ar数组每个都有两个元素(元素0和元素1),所以你需要查找第二个元素(元素1)等于你要查找的值的行(字符串{{ 1}}):
"1"
这将返回一个只有一行的数组:
TITLETYPE.select{ |x| x[1] == "1" }
要从该数组中获取第一个也是唯一的值,请使用[["Ms.", "1"]]
的{{3}}方法,该方法将返回:
Array
然后,从那里,再次使用["Ms.", "1"]
从两个值中获取第一个值:
first
答案 1 :(得分:2)
答案 2 :(得分:0)
更自然地,您应该将这些信息保留为哈希值。如果您经常需要键值,并且键值是唯一的,那么创建一个哈希:
TYTLETYPEHASH = Hash[TYTLETYPE.map(&:reverse)]
并访问它:
TYTLETYPEHASH['1'] # => 'Ms.'
或创建像:
这样的哈希TYTLETYPEHASH = Hash[TYTLETYPE]
并访问它:
TYTLEHASH.key('1') # => 'Ms.'
答案 3 :(得分:0)
我有一个类似的问题,只需使用这样的东西解决它:
<% Array.each do |value| %>
并使用<%= value[:keyname] %>
即。
一个看起来像这样的数组(使用.inspect)
[{:id=>1, :title=>"ABC"}, {:id=>2, :title=>"XYZ"}]
可以成为HTML选择/下拉框,其中包含:
<select name="ClassName[TargetParameter]">
<% Array.each do |value| %>
<option value="<%= value[:id] %>"><%= value[:title] %></option>
<% end %>
</select>