我有一个看起来像这样的二维数组:
TITLETYPE = [['Prof.', '4'],
['Dr.', '3'],
['Mrs.', '2'],
['Ms.', '1'],
['Mr.', '0']]
例如,我需要获取值 1 的密钥(应该是“女士”)我应该怎么做呢?
我有一个看起来像这样的二维数组:
TITLETYPE = [['Prof.', '4'],
['Dr.', '3'],
['Mrs.', '2'],
['Ms.', '1'],
['Mr.', '0']]
例如,我需要获取值 1 的密钥(应该是“女士”)我应该怎么做呢?
TITLETYPE.select{ |x| x[1] == '1' }.first.first
您可以使用Array
'select
方法找到您要查找的行。您的行 ar 数组每个都有两个元素(元素 0 和元素 1),因此您需要查找第二个元素(元素 1)等于您要查找的值(即字符串"1"
)的行:
TITLETYPE.select{ |x| x[1] == "1" }
这将返回一个只有一行的数组:
[["Ms.", "1"]]
要从该数组中获取第一个也是唯一的值,请使用Array
'sfirst
方法,该方法将返回:
["Ms.", "1"]
然后,从那里,再次从这两个值中获得第一个值first
:
"Ms."
更自然地,您应该将此类信息保存为哈希。如果你经常想要 key-to-value,并且 key-to-value 是唯一的,那么创建一个哈希:
TYTLETYPEHASH = Hash[TYTLETYPE.map(&:reverse)]
并访问它:
TYTLETYPEHASH['1'] # => 'Ms.'
或创建一个像这样的哈希:
TYTLETYPEHASH = Hash[TYTLETYPE]
并访问它:
TYTLEHASH.key('1') # => 'Ms.'
我有一个类似的问题,并通过简单地使用这样的东西来解决它:
<% Array.each do |value| %>
并使用访问每个元素<%= value[:keyname] %>
IE
一个看起来像这样的数组(使用 .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>