oka*_*56k 2 ruby ruby-on-rails
给定这样的哈希:
{
id: 1,
name: "test",
children: [
{ id: 1, name: "kid 1" },
{ id: 2, name: "kid 2" }
]
}
Run Code Online (Sandbox Code Playgroud)
如何递归删除所有 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
Run Code Online (Sandbox Code Playgroud)
可以根据需要扩展为包括其他数据类型。