"1", "a_0_def"=>"1",-6ren">
gpt4 book ai didi

ruby-on-rails - 哈希数组的 transform_keys

转载 作者:数据小太阳 更新时间:2023-10-29 08:58:37 26 4
gpt4 key购买 nike

我有以下哈希数组,我想使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com