array:filter
Returns an array containing those members of the $array for which
$function returns true.
Signature
array:filter(
$array as array(*),
$function as function(item()*) as xs:boolean
) as array(*)Properties
This function is deterministic, context-independent, focus-independent, and higher-order.
Rules
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))
)
Error Conditions
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.
Examples
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].