Select 来自 Ruby 中哈希的特定键
Select specific key from hash in Ruby
我将以下 JSON 转换为散列:
<%
json = '{
"speed": 50,
"braking": 50,
"time_on_task": 50
}'
json = JSON.parse(json)
%>
目前我只是遍历它们并显示它们:
<ul>
<% json.each do |t| %>
<li><%= "<b>#{t.first.humanize}</b>: #{t.last}".html_safe %></li>
<% end %>
</ul>
但是我想构建一个可以通过键名选择特定项目的方法。例如show_score(json, 'speed')
我试过了:
def show_score(hash, key)
hash.select { |k| k == key }
end
刚刚 returns: {"speed"=>50}
所以我尝试了:
hash.select { |k, h| "<b>#{k.humanize}</b>: #{h}".html_safe if k == key }
但它 return 是一样的...
如果它们的键匹配,我怎样才能return我想要的格式的字符串?
def show_score(hash, key)
"<b>#{key.humanize}</b>: #{hash[key]}"
end
我会改变这个
<%
json = '{
"speed": 50,
"braking": 50,
"time_on_task": 50
}'
json = JSON.parse(json)
%>
进入
<%
hash = {
"speed" => 50,
"braking" => 50,
"time_on_task" => 50
}
json = hash.to_json
%>
我觉得你想太多了,或者我没有完全理解你的问题。
<ul>
<% json.each do |k,v| %>
<li><%= "<b>#{k.humanize}</b>: #{v}".html_safe %></li>
<% end %>
</ul>
ps。使用 Enumerable#detect
比 Enumerable#select.first
快得多
我将以下 JSON 转换为散列:
<%
json = '{
"speed": 50,
"braking": 50,
"time_on_task": 50
}'
json = JSON.parse(json)
%>
目前我只是遍历它们并显示它们:
<ul>
<% json.each do |t| %>
<li><%= "<b>#{t.first.humanize}</b>: #{t.last}".html_safe %></li>
<% end %>
</ul>
但是我想构建一个可以通过键名选择特定项目的方法。例如show_score(json, 'speed')
我试过了:
def show_score(hash, key)
hash.select { |k| k == key }
end
刚刚 returns: {"speed"=>50}
所以我尝试了:
hash.select { |k, h| "<b>#{k.humanize}</b>: #{h}".html_safe if k == key }
但它 return 是一样的...
如果它们的键匹配,我怎样才能return我想要的格式的字符串?
def show_score(hash, key)
"<b>#{key.humanize}</b>: #{hash[key]}"
end
我会改变这个
<%
json = '{
"speed": 50,
"braking": 50,
"time_on_task": 50
}'
json = JSON.parse(json)
%>
进入
<%
hash = {
"speed" => 50,
"braking" => 50,
"time_on_task" => 50
}
json = hash.to_json
%>
我觉得你想太多了,或者我没有完全理解你的问题。
<ul>
<% json.each do |k,v| %>
<li><%= "<b>#{k.humanize}</b>: #{v}".html_safe %></li>
<% end %>
</ul>
ps。使用 Enumerable#detect
比 Enumerable#select.first