Product SiteDocumentation Site

8.5. libjn:flatten

This function recursively "flattens" the supplied (top-level) arrays, leaving non-arrays unchanged.
declare function libjn:flatten($sequence as item()*) as item()*
{
  for $item in $sequence
  return
    typeswitch ($item)
    case array() return libjn:flatten($item())
    default return $item
};
Example 8.5. Flattening arrays.
Query:
libjn:flatten(
  (
    { "foo" : { "bar" : [ 1, 2 ] } },
    [ 1, 2, [ { "foo" : "bar", "bar" : "foo" } ], 3, 4 ],
    true(),
    1,
    jn:null()
  )
)
Result:
{ "foo" : { "bar" : [ 1, 2 ] } } 1 2 { "foo" : "bar", "bar" : "foo" } 3 4 true 1 null