where 筛选符合条件的元素

where 过滤器用于创建一个新的数组,其中仅包含符合特定属性值的对象。如果不指定具体的值,它默认会筛选出所有该属性值为 真值(truthy) 的对象。

在此示例中,假设您有一个产品列表,并且希望将厨房用品单独展示。使用 where,您可以创建一个仅包含 "type""kitchen" 的产品的数组。

输入

All products:
{% for product in products %}
- {{ product.title }}
{% endfor %}

{% assign kitchen_products = products | where: "type", "kitchen" %}

Kitchen products:
{% for product in kitchen_products %}
- {{ product.title }}
{% endfor %}

输出

All products:
- Vacuum
- Spatula
- Television
- Garlic press

Kitchen products:
- Spatula
- Garlic press

假设您有一个产品列表,并且只想展示可供购买的产品。您可以使用 where,仅指定属性名称而不设置目标值,以包含所有 "available" 值为 truthy 的产品。

输入

All products:
{% for product in products %}
- {{ product.title }}
{% endfor %}

{% assign available_products = products | where: "available" %}

Available products:
{% for product in available_products %}
- {{ product.title }}
{% endfor %}

输出

All products:
- Coffee mug
- Limited edition sneakers
- Boring sneakers

Available products:
- Coffee mug
- Boring sneakers

where 过滤器还可以与 first 过滤器结合使用,从数组中查找单个对象。例如,假设您想展示您新秋季系列中的一件衬衫。

输入

{% assign new_shirt = products | where: "type", "shirt" | first %}

Featured product: {{ new_shirt.title }}

输出

Featured product: Hawaiian print sweater vest