【问题标题】:split a symbol hash into string arrays of keys and values将符号哈希拆分为键和值的字符串数组
【发布时间】:2014-08-21 06:09:25
【问题描述】:

有没有办法将符号散列拆分为键和值的字符串数组?

例如:

hash = {:key1 => 'val1',:key2 => 'val2'}

应该是:

keys = ['key1', 'key2']
values = ['val1','val2']

我知道我可以这样做:

keys = hash.keys.map { |key| key.to_s }
values = hash.values.map { |val| val.to_s }

但我想只循环一次。

【问题讨论】:

  • 你能再解释一下吗?在他们那一刻,您所要求的令人困惑。例如,您谈论符号哈希,但将其定义为 array = [:key1 => val1,:key2 => val2],这不是有效的 ruby​​ 语法。数组也没有键或值方法。
  • 对不起,我的错误...查看更新的问题。
  • 好的,我看不到在一个命令中执行此操作的简单方法。动机是什么?如果在一个命令中执行它真的很重要,我认为您将需要定义一个自定义方法。你不能用.to_a吗?

标签: ruby-on-rails hash key-value


【解决方案1】:

我发现这个问题是因为我也在寻找一种方法来做到这一点。这是我想出的:

hash.map { |k,v| [k.to_s, v.to_s] }.transpose

你可以这样使用:

hash = { :k1 => "v1", :k2 => "v2", :k3 => "v3" }
keys, values = hash.map { |k,v| [k.to_s, v.to_s] }.transpose
# keys == ["k1", "k2", "k3"]
# values == ["v1", "v2", "v3"]

【讨论】:

  • 谢谢。最好这样做:keys, values = hash.stringify_keys.to_a.transpose
  • 是的,这样更好!
猜你喜欢
  • 1970-01-01
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多