作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想将嵌套散列展平为一个数组。例如:
a = {'1'=>{'2'=>{'5'=>{},'6'=>{'8'=>{}}}},'3'=>{},'4'=>{'7'=>{}}}
flatten_nested_hash(a) 的结果将是:
["1", "2", "5", "6", "8", "3", "4", "7"]
最后我写了一些递归函数,但我觉得必须有一些更简单的非递归方法。
我的函数如下所示:
def flatten_nested_hash(categories)
categories.map do |k,v|
if v == {}
k
else
[k,flatten_nested_hash(v)]
end
end.flatten
end
最佳答案
递归。
def flatten_nested_hash(categories)
categories.flat_map{|k, v| [k, *flatten_nested_hash(v)]}
end
在 Hash 类上定义它。
class Hash
def flatten_nested; flat_map{|k, v| [k, *v.flatten_nested]} end
end
关于ruby - 将嵌套散列展平为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17613426/
我是一名优秀的程序员,十分优秀!