Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

FILTER

Selects elements from an array that match a specified condition.

Syntax

result = FILTER(array, condition)

Parameters

ParameterTypeDescription
arrayArrayThe source array to filter
conditionStringExpression 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

OperatorDescriptionExample
=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"
ANDLogical and"item.active = true AND item.verified = true"
ORLogical 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