Clojure 如何从试剂原子向量中删除键/值?
我有一个试剂原子,它由键/值映射向量组成 如何删除某个键值恰好是UUID的键值对?我试过: (交换!状态/项目(dissoc@state/items id)) 但我得到:Clojure 如何从试剂原子向量中删除键/值?,clojure,clojurescript,reagent,Clojure,Clojurescript,Reagent,我有一个试剂原子,它由键/值映射向量组成 如何删除某个键值恰好是UUID的键值对?我试过: (交换!状态/项目(dissoc@state/items id)) 但我得到: core.cljs:270未捕获错误:没有协议方法IMap.-dissoc为cljs.core/LazySeq类型定义:({:id#uuid“e1f9341f-bc02-4c17-a594-b9b5ede72214”,:description“foo bar”})我认为需要使用删除。因此,这应该有助于: (def data
core.cljs:270未捕获错误:没有协议方法IMap.-dissoc为cljs.core/LazySeq类型定义:({:id#uuid“e1f9341f-bc02-4c17-a594-b9b5ede72214”,:description“foo bar”})我认为需要使用
删除
。因此,这应该有助于:
(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的函数因此,代码>将如下所示:
(fn [old]
(remove #(= (:id %) "e1f9341f-bc02-4c17-a594-b9b5ede72214") old))
我的数据是这样的:[{:id“e1f9341f-bc02-4c17-a594-b9b5ede72214”:description“Foo”}{:id“e1f9341f-bc02-4c17-a594-b9b5ede72214”:description“Bar”},所以我需要删除一个具有特定:id的映射。