ruby-on-rails - 如何在 ruby​​ 上的哈希中创建 deep_slice

标签 ruby-on-rails ruby hash-of-hashes

我正在寻找一种干净的方法来执行此操作,我找到了一些解决方法,但没有找到像切片这样的东西(有些人建议使用 gem,但我认为此操作不需要,如果我错了),所以我发现自己的哈希值包含一堆哈希值,我想要一种方法来执行 Slice对此哈希进行操作并从嵌套哈希中获取键/值对,所以问题是:

Ruby中有类似deep_slice的东西吗?

示例:

input: a = {b: 45, c: {d: 55, e: { f: 12}}, g: {z: 90}}, keys = [:b, :f, :z]

expected output: {:b=>45, :f=>12, :z=>90}

提前致谢! 👍

最佳答案

环顾四周后,我决定自己实现这个,这就是我修复它的方法:

a = {b: 45, c: {d: 55, e: { f: 12}}, g: {z: 90}}
keys = [:b, :f, :z]
def custom_deep_slice(a:, keys:)
    result = a.slice(*keys)
    a.keys.each do |k|
        if a[k].class == Hash
            result.merge! custom_deep_slice(a: a[k], keys: keys)
        end
    end
    result
end
c_deep_slice = custom_deep_slice(a: a, keys: keys)
p c_deep_slice

上面的代码很经典DFS ,它利用 merge!由哈希类提供。

可以测试上面的代码here

关于ruby-on-rails - 如何在 ruby​​ 上的哈希中创建 deep_slice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65756598/

相关文章:

ruby-on-rails - 如何获得模型的所有属性减去一些

ruby-on-rails - rspec 无法识别邮件类别

ruby - 元编程多少算太多?

ruby-on-rails - Puma未定义局部变量或方法 `daemonize'错误

ruby-on-rails - 找不到没有 ID 的 [model] - Ruby on rails

perl - 在 Perl HoH 中访问嵌套哈希而不使用keys()?

ruby - 在 Redis 中存储哈希的哈希

ruby-on-rails - Rake 任务似乎忽略了database.yml 配置

ruby-on-rails - rails : Validating existence of an association

ruby - 嵌套哈希定义?()