私はこの構造を持っています:
[{"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)