Ruby动态合并哈希中前缀关联键的实现方案问询
动态前缀哈希转换的通用实现
针对你需要将带固定前缀的动态键哈希转换为指定结构的需求,这里提供Ruby环境下的通用实现方案:
基础实现
假设前缀是固定的(比如示例中的key_),通过遍历键值对拆分键名即可完成转换:
my_hash = {key_a: "value a", key_b: "value b", key_c: "value c"} prefix = "key_" result = { key: my_hash.map do |k, v| # 将符号键转为字符串,移除前缀后转回符号作为新键 new_key = k.to_s.sub(prefix, "").to_sym { new_key => v } end } # 输出结果:{:key=>[{:a=>"value a"}, {:b=>"value b"}, {:c=>"value c"}]}
带过滤的实现
如果原哈希中存在不带目标前缀的键,可以通过过滤逻辑只处理符合要求的键:
my_hash = {key_a: "value a", key_b: "value b", other_key: "ignore this"} prefix = "key_" result = { key: my_hash.filter_map do |k, v| key_str = k.to_s # 跳过不带指定前缀的键 next unless key_str.start_with?(prefix) new_key = key_str.sub(prefix, "").to_sym { new_key => v } end } # 输出结果:{:key=>[{:a=>"value a"}, {:b=>"value b"}]}
使用时只需修改prefix变量的值,就能适配任意前缀的动态键名,完全不需要提前知道前缀后的具体内容。
内容的提问来源于stack exchange,提问作者oj5th
相关产品推荐
相关产品推荐

