如何从试剂原子向量中删除键/值?

时间:2016-09-09 12:15:31

标签: clojure clojurescript reagent

我有一个试剂原子,它由一个键/值映射矢量组成。

如何删除具有UUID的某个键值的键/值对?我试过了:

(swap!state / items(dissoc @ state / items id))

但我明白了:

core.cljs:270未捕获错误:没有为类型cljs.core / LazySeq定义的协议方法IMap.-dissoc:({:id #uuid" e1f9341f-bc02-4c17-a594-b9b5ede72214", :description" foo bar"})

1 个答案:

答案 0 :(得分:2)

我认为您需要使用remove。所以这应该有所帮助:

(def data  [{:id "e1f9341f-bc02-4c17-a594-b9b5ede72214" :description "Foo"} {:id "e1f9341f-bc02-4c17-a594-b9b5ede72214" :description "Bar"}] )
(remove #(= (:id %) "e1f9341f-bc02-4c17-a594-b9b5ede72214") data)
;; => ()

swap!函数获取旧值并返回更新的值。因此,上面的data将是旧值。您传递给swap!的功能将如下所示:

(fn [old]
  (remove #(= (:id %) "e1f9341f-bc02-4c17-a594-b9b5ede72214") old))