【发布时间】:2017-12-28 15:44:22
【问题描述】:
给定一个数据结构,我想重新构造它以按嵌套值之一进行分组。这些值是向量,每当我遇到多个值时,我都会陷入困境。
给定一个这样的地图向量:
(def tools
[{:name "A",
:config
{:accepts ["id"],
:classes ["X"]}}
{:name "B",
:config
{:accepts ["id"],
:classes ["X", "Y"]
}}])
我可以几乎得到我想要的——通过运行group-by:
(group-by #(get-in % [:config :classes]) tools)
但它以:classes 中的整个向量作为键。
{["X"] [{:name "A",
:config {:accepts ["id"],
:classes ["X"]}}],
["X" "Y"] [{:name "B",
:config {:accepts ["id"],
:classes ["X" "Y"]}}]}
我真正想要的是每个类复制一次值,如下所示:
{"X" [{:name "A"
:config {:accepts ["id"]
:classes ["X"]}}
{:name "B"
:config {:accepts ["id"]
:classes ["X" "Y"]}}]
"Y" [{:name "B"
:config {:accepts ["id"]
:classes ["X" "Y"]}}]}
鉴于我在 classes 中有多个值,我不太确定如何处理。
工作 repl 演示:https://repl.it/@YoYehudi/FamiliarDisguisedXiphiasgladius
【问题讨论】:
标签: clojure clojurescript