Returns an array containing those members of the $array
for which
$function
returns true.
array:filter
( $array
as array(*)
,$function
as function(item()*) as xs:boolean
array(*)
The effect of the function is equivalent to the following recursive definition:
if (array:size($array) eq 0) then [ ] else op:array-concat( if ($function(array:head($array))) then array:head($array) else [ ], array:filter(array:tail($array)) )
The expression array:filter(["A", "B", 1, 2], function($x) {$x instance of xs:integer})
returns [1, 2]
.
The expression array:filter(["the cat", "sat", "on the mat"], function($s){fn:count(fn:tokenize($s)) gt 1})
returns ["the cat", "on the mat"]
.
The expression array:filter(["A", "B", "", 0, 1], boolean#1)
returns ["A", "B", 1]
.
As a consequence of the function signature and the function calling rules, a type error occurs if the supplied
function $function
returns anything other than a single xs:boolean
item; there is no conversion
to an effective boolean value.