FILTER
Selects elements from an array that match a specified condition.
Syntax
result = FILTER(array, condition)
Parameters
| Parameter | Type | Description |
|---|---|---|
array | Array | The source array to filter |
condition | String | Expression that evaluates to true/false for each element |
Description
FILTER creates a new array containing only the elements from the input array that satisfy the given condition. The condition is evaluated for each element, and only elements where the condition is true are included in the result.
Examples
Filter by Field Value
orders = FIND "orders", "year=2025"
large_orders = FILTER(orders, "item.total > 1000")
TALK "Found " + LEN(large_orders) + " orders over $1000"
Filter by String Match
contacts = FIND "contacts", "active=true"
gmail_users = FILTER(contacts, "INSTR(item.email, 'gmail.com') > 0")
FOR EACH contact IN gmail_users
TALK contact.name + " - " + contact.email
NEXT
Filter by Status
tasks = FIND "tasks", "assigned_to=me"
pending = FILTER(tasks, "item.status = 'pending'")
completed = FILTER(tasks, "item.status = 'completed'")
TALK "Pending: " + LEN(pending) + ", Completed: " + LEN(completed)
Filter Numbers
scores = [85, 92, 67, 78, 95, 88, 72]
passing = FILTER(scores, "item >= 70")
honors = FILTER(scores, "item >= 90")
TALK "Passing: " + LEN(passing) + ", Honors: " + LEN(honors)
Complex Conditions
products = FIND "products", "category=electronics"
featured = FILTER(products, "item.in_stock = true AND item.rating >= 4.0")
TALK "Featured products:"
FOR EACH product IN featured
TALK "- " + product.name + " (★" + product.rating + ")"
NEXT
Return Value
Returns a new array containing only elements where the condition evaluated to true.
- Original array is not modified
- Returns empty array if no elements match
- Preserves order of matching elements
Sample Conversation
Condition Operators
| Operator | Description | Example |
|---|---|---|
= | Equals | "item.status = 'active'" |
!= | Not equals | "item.type != 'archived'" |
> | Greater than | "item.amount > 100" |
>= | Greater or equal | "item.score >= 70" |
< | Less than | "item.quantity < 10" |
<= | Less or equal | "item.age <= 30" |
AND | Logical and | "item.active = true AND item.verified = true" |
OR | Logical or | "item.priority = 'high' OR item.urgent = true" |
Common Patterns
Filter then Count
users = FIND "users", "registered=true"
premium = FILTER(users, "item.plan = 'premium'")
TALK "Premium users: " + LEN(premium)
Filter then Map
orders = FIND "orders", "status=shipped"
recent = FILTER(orders, "item.ship_date > DATEADD('day', -7, NOW())")
tracking = MAP(recent, "tracking_number")
Chain Multiple Filters
products = FIND "products", "active=true"
in_stock = FILTER(products, "item.quantity > 0")
on_sale = FILTER(in_stock, "item.discount > 0")
featured = FILTER(on_sale, "item.rating >= 4.5")
See Also
- FIND - Retrieve data from database
- MAP - Transform filtered results
- FOR EACH - Iterate over filtered array
- AGGREGATE - Calculate summary from filtered data