【发布时间】:2016-09-26 12:33:15
【问题描述】:
我有以下数据结构(我相信有两个地图向量)
{ :put [{:listId "myList", :entryId "1", :dateTime 1434637074},
{:listId "myList", :entryId "2", :dateTime 1434637075}],
:delete [{:listId "myList", :entryId "1"}]}
并希望删除 :delete 中已存在键 listId 和 entryId 的任何 :put 条目。因此结果应该是:
{ :put [{:listId "myList", :entryId "2", :dateTime 1434637075}],
:delete [{:listId "myList", :entryId "1"}]}
我尝试了以下方法,但 1)它不是惯用的 Clojure 并且 2)它不会删除重复的条目。
(defn remove-add-if-duplicate [requests]
(doseq [delete (seq (:delete requests))]
(doseq [put (seq (:put requests))
:when (and (= (:listId delete) (:listId put))
(= (:entryId delete) (:entryId put))]
(disj (set (:put requests)) put)))
requests))
(remove-add-if-duplicate
{ :put [{:listId "myList", :entryId "1", :dateTime 1434637074},
{:listId "myList", :entryId "2", :dateTime 1434637075}],
:delete [{:listId "myList", :entryId "1"}]})
你能帮我修复我的代码或告诉我一个很好的方法吗?
【问题讨论】:
标签: clojure