# Filter array elements > Supported in: Batch, Streaming Filters an array based on the filter expression. Note, array index starts at 1. **Expression categories:** Array ## Declared arguments * **Array:** Array to be filtered.
*Expression\>* * **Expression to filter:** If the expression evaluates to true for a given element, the element will be kept, if false the element will be removed.
*Expression\* **Type variable bounds:** *T accepts AnyType* **Output type:** *Array\* ## Examples ### Example 1: Base case **Argument values:** * **Array:** `array` * **Expression to filter:**
isNotNull(
 expression: `element`,
) | array | **Output** | | ----- | ----- | | \[ 2, 5, *null*, 11 ] | \[ 2, 5, 11 ] | *** ### Example 2: Base case **Argument values:** * **Array:** `array` * **Expression to filter:**
lessThanOrEquals(
 left: `element`,
 right: 10,
) | array | **Output** | | ----- | ----- | | \[ 2, 5, *null*, 11 ] | \[ 2, 5 ] | *** ### Example 3: Base case **Argument values:** * **Array:** `array` * **Expression to filter:**
lessThanOrEquals(
 left: `element`,
 right: 10,
) | array | **Output** | | ----- | ----- | | \[ 2, 5, 7, 11, 12, 15 ] | \[ 2, 5, 7 ] | *** ### Example 4: Base case **Description:** Note that array index starts at 1. **Argument values:** * **Array:** `array` * **Expression to filter:**
equals(
 left: `element`,
 right: `elementIndex`,
) | array | **Output** | | ----- | ----- | | \[ 1, -1, -2, 4, -5 ] | \[ 1, 4 ] | *** ### Example 5: Base case **Argument values:** * **Array:** `array` * **Expression to filter:**
stringContains(
 expression: `element`,
 ignoreCase: false,
 value: hello,
) | array | **Output** | | ----- | ----- | | \[ hello world, hello, world ] | \[ hello world, hello ] | *** ### Example 6: Base case **Description:** Filtering an array of structs by a field value, using Get struct field on the element variable. **Argument values:** * **Array:** `array` * **Expression to filter:**
lessThanOrEquals(
 left:
getStructField(
 locator: age,
 struct: `element`,
),
 right: 25,
) | array | **Output** | | ----- | ----- | | \[ {
 **age**: 11,
}, {
 **age**: 22,
}, {
 **age**: 33,
} ] | \[ {
 **age**: 11,
}, {
 **age**: 22,
} ] | *** ### Example 7: Base case **Argument values:** * **Array:** `array` * **Expression to filter:**
lessThanOrEquals(
 left:
add(
 expressions: \[`element`, 4],
),
 right: 10,
) | array | **Output** | | ----- | ----- | | \[ 2, 5, 7, 11, 12, 15 ] | \[ 2, 5 ] | *** ### Example 8: Null case **Argument values:** * **Array:** `array` * **Expression to filter:**
lessThanOrEquals(
 left: `element`,
 right: 10,
) | array | **Output** | | ----- | ----- | | *null* | *null* | ***