> For the complete documentation index, see [llms.txt](https://docs.datajet-app.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.datajet-app.com/liquid/filters/find.md).

# find

Finds the first item in an array where a property matches a given value. Returns `null` if no match is found.

```liquid
{% assign product = products | find: "sku", "ABC123" %}
{% log product.title %}
```

#### Syntax

```liquid
{{ array | find: property, value }}
```

| Parameter  | Description                                                                  |
| ---------- | ---------------------------------------------------------------------------- |
| `array`    | Array of objects to search                                                   |
| `property` | Property name to match against (supports nested properties via dot notation) |
| `value`    | Value to compare against                                                     |

#### Return Value

Returns the first matching item, or `null` if no item matches.

#### Examples

**Find a product by SKU:**

```liquid
{% assign product = products | find: "sku", "T-SHIRT-RED-M" %}
{% if product %}
  {% log "Found: " | append: product.title %}
{% else %}
  {% log "Product not found" %}
{% endif %}
```

**Find an order by name:**

```liquid
{% assign order = orders | find: "name", "#1042" %}
{% log order.total_price %}
```

**Find by nested property:**

```liquid
{% assign edge = result.products.edges | find: "node.handle", "classic-tee" %}
{% log edge.node.title %}
```

**Find a customer by email:**

```liquid
{% assign customer = customers | find: "email", target_email %}
{% if customer %}
  {% log "Customer found: " | append: customer.first_name %}
{% endif %}
```

#### Notes

* Returns the **first** matching item — if multiple items match, only the first is returned
* Uses loose equality (`==`) for comparison
* Supports dot notation for nested properties: `"node.title"`, `"address.city"`
* For more complex matching conditions, use `find_exp`
* For building a reusable lookup by property, consider `index_by` instead
