dissoc

added
1.0

ns
clojure.core

type
function

(dissoc map) (dissoc map key) (dissoc map key & ks)

dissoc[iate]. Returns a new map of the same (hashed/sorted) type,
that does not contain a mapping for key(s).

                user=> (dissoc {:a 1 :b 2 :c 3}) ; dissoc nothing 
{:a 1, :b 2, :c 3} 

user=> (dissoc {:a 1 :b 2 :c 3} :b) ; dissoc key :b
{:a 1, :c 3} 

user=> (dissoc {:a 1 :b 2 :c 3} :d) ; dissoc not existing key
{:a 1, :b 2, :c 3} 

user=> (dissoc {:a 1 :b 2 :c 3} :c :b) ; several keys at once
{:a 1} 

            
                ;; There is no (dissoc-in) analogous to (get-in) or (assoc-in), but 
;; you can achieve a similar effect using (update-in):

(update-in {:a {:b {:x 3} :c 1}} [:a :b] dissoc :x)
;;=> {:a {:b {}, :c 1}}
            
                ;; When applied to a record and one of its base fields, 
;; dissoc produces a plain map instead of a record

(defrecord Widget [id])
(def w (->Widget "id"))

(class w)
;; user.Widget

(class (dissoc w :id))
;; clojure.lang.PersistentArrayMap