Bij*_*dra 10 ruby hash ruby-on-rails
假设我有一个哈希值
{:facebook=>0.0, :twitter=>10.0, :linkedin=>6.0, :youtube=>8.0}
Run Code Online (Sandbox Code Playgroud)
现在我希望它改成像这样的数组
[[Facebook,0.0],[Twitter,10.0],[Linkedin,6.0],[Youtube,8.0]]
Run Code Online (Sandbox Code Playgroud)
我可以使用逻辑来提取并将其更改为数组,但我只是想知道在ruby中是否可以使用任何已定义的方法来实现上述方法.
Gaz*_*ler 28
你可以使用to_a.
{:facebook=>0.0, :twitter=>10.0, :linkedin=>6.0, :youtube=>8.0}.to_a
Run Code Online (Sandbox Code Playgroud)
回报
[[:facebook, 0.0], [:twitter, 10.0], [:linkedin, 6.0], [:youtube, 8.0]]
Run Code Online (Sandbox Code Playgroud)
这不会自动将符号转换为常量,但您必须使用map(和const_get).
{:facebook=>0.0, :twitter=>10.0, :linkedin=>6.0, :youtube=>8.0}.map{|k,v| [Kernel.const_get(k.to_s.capitalize), v]}
Run Code Online (Sandbox Code Playgroud)
输出
[[Facebook,0.0],[Twitter,10.0],[Linkedin,6.0],[Youtube,8.0]]
Run Code Online (Sandbox Code Playgroud)
只需将您的哈希包装在[]中,然后在哈希之前添加星号.
[*{:facebook=>0.0, :twitter=>10.0, :linkedin=>6.0, :youtube=>8.0}]
Run Code Online (Sandbox Code Playgroud)
sites = {:facebook => 0.0, :twitter => 10.0, :linkedin => 6.0, :youtube => 8.0}
sites.map { |key, value| [Object.const_get(key.to_s.capitalize), value] }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6581 次 |
| 最近记录: |