我有这个结构:
[{"a" {"b" 1 "c" 2}
"children" [{"a" {"b" 3 "c" 4} "children" []}]}
{"a" {"b" 5 "c" 6} "children" []}
{"a" {"b" 7 "c" 8}
"children" [{"a" {"b" 9 "c" 10} "children" []} {"a" {"b" 10 "c" 10} "children" []}]}]
我正在尝试编写一种算法来在向量中移动和元素。例如在最后一个元素中,它的children
向量具有:
"children" [{"a" {"b" 9 "c" 10} "children" []} {"a" {"b" 10 "c" 10} "children" []}]
我的函数应该搜索特定的嵌套地图 - 比如说,找到它是10
其b
属性值的地图。我会定位{"a" {"b" 10 "c" 10} "children" []}
。一旦我找到它,我需要用向量改变它的位置。让我们假设,这children
将变成:
"children" [{"a" {"b" 10 "c" 10} "children" []} {"a" {"b" 9 "c" 10} "children" []}]
使用 Zipper,我能够遍历并定位嵌套地图,但不确定如何在矢量内移动它。
这是我的拉链的创建方式:
(z/zipper #(contains? % "children") #(get % "children") (fn [_ c] c) data-structure)