declare function libjn:intersect($sequence as item()*) as object()
{
{|
let $objects := $sequence[. instance of object()]
for $key in head($objects)()
where every $object in tail($objects)
satisfies exists(index-of($object(), $key))
return { $key : $objects($key) }
|}
};
libjn:intersect(
(
{ "foo" : { "bar" : [ 1, 2 ] } },
[ 1, 2, 3, 4 ],
{ "foo" : "bar", "bar" : "foo" }
true(),
1,
jn:null()
)
)
{ "foo" : [ { "bar" : [ 1, 2 ] }, "bar" ] }