作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
"1", "a_0_def"=>"1",-6ren">
我有以下哈希数组,我想使用 transform_keys 使用正则表达式去除每个键的开头:
array_of_hashes = [{"a_0_abc"=>"1",
"a_0_def"=>"1",
"a_0_hij"=>"1",},
{"a_1_abc”=>"2",
"a_1_def"=>"2",
"a_1_hij"=>"2"}]
我想要以下内容:
transformed_hash_keys = [{"abc"=>"1",
"def"=>"1",
"hij"=>"1",},
{"abc"=>"2",
"def"=>"2",
"hij"=>"2"}]
我有以下方法,但结果是 array_of_hashes 而不是 transformed_hash_keys:
def strip
s = array_of_hashes.each { |hash| hash.transform_keys { |key| key.sub(/^a_(\d+)_/, '') } }
end
谁能告诉我我在这个方法中做错了什么?
最佳答案
transform_keys
没有就地操作,each
返回原始迭代器,而不是 block 的结果。
你可以用 map
而不是 each
做你想做的事。
def strip
s = array_of_hashes.map { |hash| hash.transform_keys { |key| key.sub(/^a_(\d+)_/, '') } }
end
或者,您可以使用 transform_keys!
修改 array_of_hashes
的内容
def strip
s = array_of_hashes.each { |hash| hash.transform_keys! { |key| key.sub(/^a_(\d+)_/, '') } }
end
关于ruby-on-rails - 哈希数组的 transform_keys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42307101/
我有以下哈希数组,我想使用 transform_keys 使用正则表达式去除每个键的开头: array_of_hashes = [{"a_0_abc"=>"1", "a_0_def"=>"1",
这个例子直接取自 Ruby 2.4.1 documentation ,我可以确认我正在运行 2.4.1: ({a: 1, b: 2, c: 3}).transform_keys {|k| k.to_s
更新 gems 后,它不会加载 sidekiq 网站,并出现以下错误: NoMethodError (undefined method `transform_keys' for ): 更新的 gem
我是一名优秀的程序员,十分优秀!