Clojure 将嵌套映射分解为键值对
我想将Clojure中的嵌套映射分解为一系列键值对。例如,让我们看一下这张地图:Clojure 将嵌套映射分解为键值对,clojure,Clojure,我想将Clojure中的嵌套映射分解为一系列键值对。例如,让我们看一下这张地图: {:a :b :c {:d {:e :f :g :h} :i :j}} 此贴图应如下所示: [[:a :b] [:c {:d {:e :f :g :h} :i :j}] [:d {:e :f :g :h}] [:e :f] [:g :h] [:i :j]] 输出的顺序并不重要 我正在考虑使用递归函数,tree-seq或cloju
{:a :b
:c {:d {:e :f
:g :h}
:i :j}}
此贴图应如下所示:
[[:a :b]
[:c {:d {:e :f
:g :h}
:i :j}]
[:d {:e :f
:g :h}]
[:e :f]
[:g :h]
[:i :j]]
输出的顺序并不重要
我正在考虑使用递归函数,
tree-seq
或clojure.walk
来解决这个问题。我怀疑我可能遗漏了Clojure标准库中的某些内容。实现这一点的最佳解决方案是什么?这里有一个使用树序列的解决方案:
(defn decompose [m]
(mapcat (partial tree-seq (comp map? val) val) m))
这将生成一系列的MapEntry
s.谢谢!我可以补充一点,这会在ClojureScript中生成一系列向量。