我想使用规范化函数规范化Hash
的密钥,以便这个哈希值
{"aType" => 1, "b_Type" => 2}
将转换为
{:atype => 1, :btype => 2}
此处,规范化功能会从键中删除下划线,对其进行缩减,并使其成为符号。
我使用map
编写了以下内容(假设normalize
是一种规范化方法):
params = params.map {|k,v| {normalize(k) => v}}.inject(:merge)
有没有更好的方法呢?
此问题与问题“How to replace all hash keys having a '.'?”有关。我想知道最佳(更简洁或更快)的方法。
答案 0 :(得分:3)
我将如何做到这一点
Hash[h.map {|k,v| [normalize(k), v] }]
答案 1 :(得分:1)
以下是Rails的用法(在这种情况下,它们会扩展Hash
以生成所有键字符串,但您可以轻松地将该方法放在其他位置。)
def stringify_keys!
keys.each do |key|
self[key.to_s] = delete(key)
end
self
end
尽管所有这些方法都是合理的,但大多数用途可能没有实质性的可读性或性能差异。
答案 2 :(得分:0)
如果您使用的是Rails应用程序,或想要引入ActiveSupport,则可以使用ActiveSupport::HashWithIndifferentAccess来'key'
或:key
设置或获取值哈希