2

私はこの構造を持っています:

 [{"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)
4

2 に答える 2