我有一个条件,我得到一个哈希值
hash = {"_id"=>"4de7140772f8be03da000018", .....}
我想让这个散列
hash = {"id"=>"4de7140772f8be03da000018", ......}
附注:我不知道哈希中的键是什么,它们是随机的,每个键都有一个“_”前缀,我不想要下划线
我有一个条件,我得到一个哈希值
hash = {"_id"=>"4de7140772f8be03da000018", .....}
我想让这个散列
hash = {"id"=>"4de7140772f8be03da000018", ......}
附注:我不知道哈希中的键是什么,它们是随机的,每个键都有一个“_”前缀,我不想要下划线
当前回答
你可以这样做
hash.inject({}){|option, (k,v) | option["id"] = v if k == "_id"; option}
这应该对你的情况有用!
其他回答
hash.each {|k,v| hash.delete(k) && hash[k[1..-1]]=v if k[0,1] == '_'}
你可以这样做
hash.inject({}){|option, (k,v) | option["id"] = v if k == "_id"; option}
这应该对你的情况有用!
如果我们想在哈希中重命名一个特定的键,那么我们可以这样做: 假设我的哈希是my_hash = {'test' => 'ruby哈希演示'} 现在我想用'message'替换'test',然后: My_hash ['message'] = My_hash .delete('test')
准确地回答了问题:
hash = {"_id"=>"4de7140772f8be03da000018"}
hash.transform_keys { |key| key[1..] }
# => {"id"=>"4de7140772f8be03da000018"}
从Ruby 2.5版开始,transform_keys方法就存在于Hash类中。
https://blog.bigbinary.com/2018/01/09/ruby-2-5-adds-hash-transform_keys-method.html
hash[:new_key] = hash.delete :old_key