ruby-on-rails - 从嵌套哈希中删除所有相似的键

标签 ruby-on-rails ruby

给定一个像这样的哈希:

{
  id: 1,
  name: "test",
  children: [
    { id: 1, name: "kid 1" },
    { id: 2, name: "kid 2" }
  ]
}

如何递归删除所有 id 键?

最佳答案

您可以编写一个函数来递归遍历哈希和数组。

def delete_recursively(thing, key_to_delete)
  case thing
  when Hash
    # Delete the key
    thing.delete(key_to_delete)

    # Recurse into each remaining hash value.
    thing.each_value do |value|
      delete_recursively(value, key_to_delete)
    end
  when Array
    # Recurse into each value of the array.
    thing.each do |value|
      delete_recursively(value, key_to_delete)
    end
  end
end

可以根据需要进行扩展以包含其他数据类型。

关于ruby-on-rails - 从嵌套哈希中删除所有相似的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57263288/

相关文章:

ruby-on-rails - 如何在 ruby​​ on rails 中建立 has_two 关系?

ruby-on-rails - 检查帖子是否在特定日期后发布

javascript - jQuery ajax :before event

ruby - 如何将方法转换为 proc 以便在 Ruby 中使用 & 方法

ruby-on-rails - Ruby on Rails 中的自定义字段/表单

ruby-on-rails - 如何从 RubyForge 安装 gem ?

ruby - 使用用户密码对数据库数据进行加密的最佳方法是什么?

ruby - 不调用 `Hash#to_a` 将 Ruby 哈希转换为数组

ruby-on-rails - 从数据库中删除一条记录

ruby-on-rails - 我是否正确地重新索引了这个 Sphinx 索引?