2013-10-30 2 views
2

클로저 맵 변환에 문제가 있습니다. 지도는 벡터를 요소로 가지며 벡터는지도를 요소로 갖습니다.중첩 된 클로저 맵 변환

원래지도는 다음과 같습니다

 
{"values" [{"sub" false, "name" "Adhoc"} {"acm" true, "list" true, "deval" true, "name" "Buyer"}]} 

벡터 내의지도는 항상 키 "이름"하지만 다른 키가 다를 수 있습니다. name 요소는 맵 내에서 키로 작동해야합니다. 최종 결과 나는이로 변환 할 원본지도가 필요합니다

 
{"values" {"Adhoc" {"sub" false}, "Buyer" {"deval" true, "acm" true, "list" true}} 

문제는 벡터 내에서지도 요소의 양을 가질 수 있고 정말 루프와 그 해결 방법을 모르겠입니다 . 모든 제안은 높이 평가 될 것입니다.

(defn merge-by 
    [maps k] 
    (->> maps 
     (map (juxt #(get % k) #(dissoc % k))) 
     (into {}))) 

(merge-by [{"sub" false, "name" "Adhoc"} 
      {"acm" true, "list" true, "deval" true, "name" "Buyer"}] 
      "name") 
;; => {"Adhoc" {"sub" false}, "Buyer" {"deval" true, "acm" true, "list" true}} 

을 그리고 (my-map에서 저장하는 경우)이 외부지도를 처리하는 것 :

답변

2

이것은지도의 벡터를 처리 할

(update-in my-map ["values"] merge-by "name") 
+0

최고 XSC를! 무리 감사! –

+0

기꺼이 도와 드리겠습니다! – xsc

관련 문제