map:remove
Returns a map containing all the entries from a supplied map, except those having a specified key.
Signature
map:remove(
$map as map(*),
$keys as xs:anyAtomicType*
) as map(*)
Properties
This function is deterministic, context-independent, and focus-independent.
Rules
The function map:remove
returns a map containing all the entries in $map
except for any entry whose key is
the same key as an item in $keys
.
No failure occurs if an item in $keys
does not correspond to any entry in $map
;
that key value is simply ignored.
The effect of the function call map:remove($MAP, $KEY)
can be described more formally as the result of the expression below:
map:merge (
map:for-each (
$MAP, function($k, $v) {
if (some $key in $KEY satisfies (op:same-key($k, $key))
then ()
else map:entry($k, $v)
} ) )
Examples
let $week := map{0:"Sonntag", 1:"Montag", 2:"Dienstag",
3:"Mittwoch", 4:"Donnerstag", 5:"Freitag", 6:"Samstag"}
The expression map:remove($week, 4)
returns map{0:"Sonntag", 1:"Montag", 2:"Dienstag", 3:"Mittwoch", 5:"Freitag",
6:"Samstag"}
.
The expression map:remove($week, 23)
returns map{0:"Sonntag", 1:"Montag", 2:"Dienstag", 3:"Mittwoch", 4:"Donnerstag",
5:"Freitag", 6:"Samstag"}
.
The expression map:remove($week, (0, 6 to 7))
returns map{1:"Montag", 2:"Dienstag", 3:"Mittwoch", 4:"Donnerstag", 5:"Freitag"}
.
The expression map:remove($week, ())
returns map{0:"Sonntag", 1:"Montag", 2:"Dienstag", 3:"Mittwoch", 4:"Donnerstag", 5:"Freitag",
6:"Samstag"}
.