Filter-Array(数组)

Filter-Array

Array(数组)

  • concat
  • find
  • find_index
  • first
  • second
  • has
  • join
  • last
  • map
  • reject
  • reverse
  • size
  • sort
  • sort_natural
  • sum
  • uniq
  • where
  • array_append

concat

连接(组合)两个数组

  • 过滤器concat不会过滤掉重复项。如果您想删除重复项,则需要使用过滤器uniq。
// 1.数据
{
  "collection": {
    "all_types": [
      "",
      "Animals & Pet Supplies",
      "Baking Flavors & Extracts",
      "Container",
      "Cooking & Baking Ingredients",
      "Dried Flowers",
      "Fruits & Vegetables",
      "Gift Cards",
      "Health",
      "Health & Beauty",
      "Invisibility",
      "Love",
      "Music & Sound Recordings",
      "Seasonings & Spices",
      "Water"
    ],
    "all_vendors": [
      "Clover's Apothecary",
      "Polina's Potent Potions",
      "Ted's Apothecary Supply"
    ]
  }
}


// 2.代码
{%- assign types_and_vendors = collection.all_types | concat: collection.all_vendors -%}

Types and vendors:

{% for item in types_and_vendors -%}
  {%- if item != blank -%}
    - {{ item }}
  {%- endif -%}
{%- endfor %}


// 3.输出
Types and vendors:

- Animals & Pet Supplies
- Baking Flavors & Extracts
- Container
- Cooking & Baking Ingredients
- Dried Flowers
- Fruits & Vegetables
- Gift Cards
- Health
- Health & Beauty
- Invisibility
- Love
- Music & Sound Recordings
- Seasonings & Spices
- Water
- Clover's Apothecary
- Polina's Potent Potions
- Ted's Apothecary Supply

find

返回具有特定属性值的数组中的第一个项目。

  • 这要求您提供属性名称和关联值。
// 1.数据
{
  "collection": {
    "products": [
      {
        "title": "Blue Mountain Flower",
        "vendor": "Polina's Potent Potions"
      },
      {
        "title": "Charcoal",
        "vendor": "Ted's Apothecary Supply"
      },
      {
        "title": "Crocodile tears",
        "vendor": "Polina's Potent Potions"
      },
      {
        "title": "Dandelion milk",
        "vendor": "Clover's Apothecary"
      },
      {
        "title": "Draught of Immortality",
        "vendor": "Polina's Potent Potions"
      }
    ]
  }
}


// 2.代码(查找子项: vendor的值为:"Polina's Potent Potions",则返回这个子项)
{% assign product = collection.products | find: 'vendor', "Polina's Potent Potions" %}

{{ product.title }}


// 3.输出
Blue Mountain Flower

find_index

返回具有特定属性值的数组中第一个项目的索引。

  • 这要求您提供属性名称和关联值。
// 1.数据
{
  "collection": {
    "products": [
      {
        "title": "Blue Mountain Flower",
        "vendor": "Polina's Potent Potions"
      },
      {
        "title": "Charcoal",
        "vendor": "Ted's Apothecary Supply"
      },
      {
        "title": "Crocodile tears",
        "vendor": "Polina's Potent Potions"
      }
    ]
  }
}

// 2.代码(查找子项: vendor的值为:"Polina's Potent Potions",则返回这个子项)
{% assign index = collection.products | find_index: 'vendor', "Polina's Potent Potions" %}

{{ index }}


// 3.输出(第一个子项的key是0)
0

first

返回数组中的第一个项目。

// 1.数据
{
  "collection": {
    "products": [
      {
        "title": "Blue Mountain Flower",
        "vendor": "Polina's Potent Potions"
      },
      {
        "title": "Charcoal",
        "vendor": "Ted's Apothecary Supply"
      },
      {
        "title": "Crocodile tears",
        "vendor": "Polina's Potent Potions"
      }
    ]
  }
}

// 2.代码(查找子项: vendor的值为:"Polina's Potent Potions",则返回这个子项)
{%- assign first_product = collection.products | first -%}

{{ first_product.title }}
// 当您需要在标签或对象输出中使用它时,可以使用带有点符号的过滤器。
{{ collection.products.first.title }}

// 3.输出
Blue Mountain Flower
Blue Mountain Flower

second

返回数组中的第2个项目。

// 1.数据
{
  "collection": {
    "products": [
      {
        "title": "Blue Mountain Flower",
        "vendor": "Polina's Potent Potions"
      },
      {
        "title": "Charcoal",
        "vendor": "Ted's Apothecary Supply"
      },
      {
        "title": "Crocodile tears",
        "vendor": "Polina's Potent Potions"
      }
    ]
  }
}

// 2.代码(查找子项: vendor的值为:"Polina's Potent Potions",则返回这个子项)
{%- assign second_product = collection.products | second -%}
{{ second_product.title }}

// 3.输出
Ted's Apothecary Supply

has

测试数组中的任何项目是否具有特定的属性值。

  • 这要求您提供属性名称和关联值。
// 1.数据
{
  "collection": {
    "products": [
      {
        "title": "Blue Mountain Flower",
        "vendor": "Polina's Potent Potions"
      },
      {
        "title": "Charcoal",
        "vendor": "Ted's Apothecary Supply"
      },
      {
        "title": "Crocodile tears",
        "vendor": "Polina's Potent Potions"
      }
    ]
  }
}

// 2.代码(查找子项: vendor的值为:"Polina's Potent Potions",则返回这个子项)
{% assign has_potent_potions = collection.products | has: 'vendor', "Polina's Potent Potions" %}

{{ has_potent_potions }}

// 3.输出 (存在则返回true,不存在则返回false)
true

join

将数组中的所有项目合并为一个字符串,并以空格分隔。

  • 自定义分隔符:您可以为连接的项目指定自定义分隔符。
// 1.数据
{
  "collection": {
    "all_tags": [
      "extra-potent",
      "fresh",
      "healing",
      "ingredients"
    ]
  }
}


// 2.代码
{{ collection.all_tags | join }}
{{ collection.all_tags | join: ', ' }}

// 3.输出
extra-potent fresh healing ingredients
extra-potent, fresh, healing, ingredients

last

返回数组中的最后一项。

// 1.数据
{
  "collection": {
    "products": [
      {
        "title": "Blue Mountain Flower"
      },
      {
        "title": "Charcoal"
      }
    ]
  }
}


// 2.代码
{%- assign last_product = collection.products | last -%}

{{ last_product.title }}

// 3.输出
Whole bloodroot

map

根据数组中项目的特定属性创建一个值数组。

// 1.数据
{
  "collection": {
    "products": [
      {
        "title": "Draught of Immortality"
      },
      {
        "title": "Glacier ice"
      },
      {
        "title": "Health potion"
      },
      {
        "title": "Invisibility potion"
      }
    ]
  }
}


// 2.代码
{%- assign product_titles = collection.products | map: 'title' -%}

{{ product_titles | join: ', ' }}


// 3.输出
Draught of Immortality, Glacier ice, Health potion, Invisibility potion

reject

过滤数组以排除具有特定属性值的项目。

  • 这要求您提供属性名称和关联值。
// 1.数据
{
  "collection": {
    "products": [
      {
        "title": "Blue Mountain Flower",
        "vendor": "Polina's Potent Potions"
      },
      {
        "title": "Charcoal",
        "vendor": "Ted's Apothecary Supply"
      },
      {
        "title": "Crocodile tears",
        "vendor": "Polina's Potent Potions"
      }
    ]
  }
}

// 2.代码
{% assign polina_products = collection.products | reject: 'vendor', "Polina's Potent Potions" %}

Products from other vendors than Polina's Potent Potions:

{% for product in polina_products -%}
  - {{ product.title }}
{%- endfor %}

// 3.输出 (存在则返回true,不存在则返回false)
Products from other vendors than Polina's Potent Potions:

- Charcoal

reverse

反转数组中项目的顺序。

// 1.数据
{
  "collection": {
    "products": [
      {
        "title": "Draught of Immortality"
      },
      {
        "title": "Glacier ice"
      },
      {
        "title": "Health potion"
      },
      {
        "title": "Invisibility potion"
      }
    ]
  }
}


// 2.代码
Original order:
{{ collection.products | map: 'title' | join: ', ' }}

Reverse order:
{{ collection.products | reverse | map: 'title' | join: ', ' }}


// 3.输出
Original order:
Draught of Immortality, Glacier ice, Health potion, Invisibility potion

Reverse order:
Invisibility potion, Health potion, Glacier ice, Draught of Immortality

size

返回字符串或数组的大小。

  • 字符串:字符串的大小是该字符串包含的字符数。
  • 数组:数组的大小是数组中子项的数量。
// 1.数据
{
  "collection": {
    "products": [],
    "title": "Sale potions"
  }
}


// 2.代码
{{ collection.title | size }}
{{ collection.products | size }}
// size当您需要在标签或对象输出中使用它时,可以使用带有点符号的过滤器。
{{ collection.products.size }}

// 3.输出
12
0
0

sort

按区分大小写的字母或数字顺序对数组中的项目进行排序。

  • 排序区分大小写
  • 先对大写排序,然后在对小写字母排序(大写字母在前面,小写字母在后面)
// 1.数据
{
  "collection": {
    "all_tags": [
      "Burning",
      "dried",
      "extra-potent",
      "extracts",
      "fresh",
      "healing",
      "ingredients",
      "music",
      "plant",
      "Salty",
      "supplies"
    ]
  }
}


// 2.代码
{% assign tags = collection.all_tags | sort %}

{% for tag in tags -%}
  {{ tag }}
{%- endfor %}


// 3.输出
Burning
Salty
dried
extra-potent
extracts
fresh
healing
ingredients
music
plant
supplies

按数组项属性排序

  • 您可以指定数组项的属性来对数组项进行排序。您可以根据要排序的对象的任何属性进行排序。
// 1.数据
{
  "collection": {
    "products": [
      {
        "price": "10.00",
        "title": "Blue Mountain Flower"
      },
      {
        "price": "0.00",
        "title": "Charcoal"
      },
      {
        "price": "56.00",
        "title": "Crocodile tears"
      }
    ]
  }
}


// 2.代码
{% assign products = collection.products | sort: 'price' %}
{% for product in products -%}
  {{ product.title }}
{%- endfor %}


// 3.输出
Charcoal
Blue Mountain Flower
Crocodile tears

sort_natural

按不区分大小写的字母顺序对数组中的项目进行排序。

使用和sort类似

{% assign tags = collection.all_tags | sort_natural %}

{% for tag in tags -%}
  {{ tag }}
{%- endfor %}

sum

返回数组中所有元素的总和。

// 1.代码
{% assign fibonacci = '0, 1, 1, 2, 3, 5' | split: ', ' %}
{{ fibonacci | sum }}

// 2.输出
12

对对象属性值求和

// 1.数据
{
  "cart": {
    "items": [
      {
        "final_line_price": "22.49",
        "quantity": 1
      },
      {
        "final_line_price": "400.00",
        "quantity": 1
      }
    ]
  }
}


// 2.代码
Total quantity of all items in cart:
{{ cart.items | sum: 'quantity' }}

Subtotal price for all items in cart:
{{ cart.items | sum: 'final_line_price' | currency_symbol }}


// 3.输出
Total quantity of all items in cart:
2

Subtotal price for all items in cart:
$422.49

uniq

删除数组中所有重复的项目。

// 1.代码
{% assign potion_array = 'invisibility, health, love, health, invisibility' | split: ', ' %}
{{ potion_array | uniq | join: ', ' }}


// 2.输出
invisibility, health, love

where

过滤数组以仅包含具有特定属性值的项目。

  • 这要求您提供属性名称和关联值。
// 1.数据
{
  "collection": {
    "products": [
      {
        "title": "Blue Mountain Flower",
        "vendor": "Polina's Potent Potions"
      },
      {
        "title": "Charcoal",
        "vendor": "Ted's Apothecary Supply"
      },
      {
        "title": "Crocodile tears",
        "vendor": "Polina's Potent Potions"
      }
    ]
  }
}


// 2.代码
{% assign polina_products = collection.products | where: 'vendor', "Polina's Potent Potions" %}

Products from Polina's Potent Potions:

{% for product in polina_products -%}
  - {{ product.title }}
{%- endfor %}


// 3.输出
Products from Polina's Potent Potions:

- Blue Mountain Flower
- Crocodile tears

array_append

将子项A加入到数组B中,该子项可以是字符串,也可以是数组,加入后 子项A 将作为数组B的一个子项、

// 1.数据
{
  "collection": {
    "products": [
      {
        "title": "Blue Mountain Flower",
        "vendor": "Polina's Potent Potions"
      },
      {
        "title": "Charcoal",
        "vendor": "Ted's Apothecary Supply"
      }
    ],
    "product_a": {
        "title": "apple",
        "vendor": "apple girl"
      }
  }
}


// 2.代码
{% assign polina_products = collection.products | array_append: collection.product_a %}

Products from Polina's Potent Potions:

{% for product in polina_products -%}
  - {{ product.title }}
{%- endfor %}


// 3.输出
Products from Polina's Potent Potions:

- Blue Mountain Flower
- Crocodile tears
- apple
Copyright © fecify.com 2025 all right reserved,powered by Gitbook该文件修订时间: 2025-09-08 19:14:48

results matching ""

    No results matching ""