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#detectEnumerable#select.first

快得多