繁体   English   中英

如何从clojure中的向量中的一系列映射中删除给定的键?

[英]how to remove a given key from a series of maps in a vector in clojure?

在 clojure 中,给定一个数据结构[{:a "foo" :b "bar"} {:a "biz" :b "baz"}]我怎么会得到[{:b "bar"}{:b "baz"}]最简洁?

dissoc是一个函数,用于将键与关联结构(如映射)分离。 以下是使用一张地图的方法:

(dissoc my-map :a)

如果您有一系列地图,您可以在它们上map一个函数以从每个地图中dissoc键:

(map #(dissoc % :a) the-maps)

这个短语将匿名函数传递给map ,但根据使用情况,您可能想要提取一个命名函数:

(defn fix-the-map [m]
  (dissoc m :a))

(map fix-the-map the-maps)

dissoc的回答:a如果您希望所有地图都没有:a

如果您只需要一个:b键的地图列表,您可以这样做

<!-- language-all: lang-clj -->

;; Assuming my-map is the object map
;; map returns a lazy sequence

(map #(hash-map :b (:b %)) my-map)

;; or
(map #(select-keys % [:b]) mp)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM