Liquid - 基于单独数组对数组进行排序
Liquid - Sort array of based on separate array
我正在寻找一种基于单独数组对图像数组进行过滤和排序的方法。
图片:
{% assign images = '
100-0000-BLK-LF01.jpg,
100-0000-BLK-L01.jpg,
100-0000-BLK-T01.jpg,
100-0000-BLK-S01.jpg,
100-0000-BLK-HF01.jpg,
100-0000-BLK-F01.jpg' | strip | split: ',' %}
排序数组:
{% assign codes_360 = '-F01,-L01,-S01,-U01,-B01,-T01' | split: ',' %}
我可以根据代码筛选出图片,但需要根据代码数组对它们进行排序:
{%- capture images_360 -%}
{%- for image in images -%}
{%- for code in codes_360 -%}
{%- if image contains code -%}
{{- image -}}{%- if forloop.last == false -%}::{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- endfor -%}
{%- endcapture -%}
{%- assign images_360 = images_360 | strip | split: '::' -%}
{{ images_360 }}
输出:
100-0000-BLK-L01.jpg
100-0000-BLK-T01.jpg
100-0000-BLK-S01.jpg
100-0000-BLK-F01.jpg
我想让它们根据 codes_360 数组排序:
100-0000-BLK-F01.jpg
100-0000-BLK-L01.jpg
100-0000-BLK-S01.jpg
100-0000-BLK-T01.jpg
通过调换外部forloop 和嵌套forloop 的顺序弄明白了。然后添加对外部forloop的引用,以检查索引(0,1,2,3)是否等于排序数组中的相应值。
{% assign codes_360 = '-F01,-L01,-S01,-U01,-B01,-T01' | split: ',' %}
{% assign images = '
BLK-LF01.jpg,
BLK-L01.jpg,
BLK-T01.jpg,
BLK-S01.jpg,
BLK-HF01.jpg,
BLK-F01.jpg' | split: ',' %}
{%- capture images_360 -%}
{%- for code in codes_360 -%}
{% assign code_forloop = forloop %}
{%- for image in images -%}
{%- if image contains code and codes_360[code_forloop.index0] == code -%}
{{- image -}}{%- if forloop.last == false -%}::{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- endfor -%}
{%- endcapture -%}
{%- assign images_360 = images_360 | strip | split: '::' -%}
{{ images_360 }}
输出:
BLK-F01.jpg
BLK-L01.jpg
BLK-S01.jpg
BLK-T01.jpg
我正在寻找一种基于单独数组对图像数组进行过滤和排序的方法。
图片:
{% assign images = '
100-0000-BLK-LF01.jpg,
100-0000-BLK-L01.jpg,
100-0000-BLK-T01.jpg,
100-0000-BLK-S01.jpg,
100-0000-BLK-HF01.jpg,
100-0000-BLK-F01.jpg' | strip | split: ',' %}
排序数组:
{% assign codes_360 = '-F01,-L01,-S01,-U01,-B01,-T01' | split: ',' %}
我可以根据代码筛选出图片,但需要根据代码数组对它们进行排序:
{%- capture images_360 -%}
{%- for image in images -%}
{%- for code in codes_360 -%}
{%- if image contains code -%}
{{- image -}}{%- if forloop.last == false -%}::{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- endfor -%}
{%- endcapture -%}
{%- assign images_360 = images_360 | strip | split: '::' -%}
{{ images_360 }}
输出:
100-0000-BLK-L01.jpg
100-0000-BLK-T01.jpg
100-0000-BLK-S01.jpg
100-0000-BLK-F01.jpg
我想让它们根据 codes_360 数组排序:
100-0000-BLK-F01.jpg
100-0000-BLK-L01.jpg
100-0000-BLK-S01.jpg
100-0000-BLK-T01.jpg
通过调换外部forloop 和嵌套forloop 的顺序弄明白了。然后添加对外部forloop的引用,以检查索引(0,1,2,3)是否等于排序数组中的相应值。
{% assign codes_360 = '-F01,-L01,-S01,-U01,-B01,-T01' | split: ',' %}
{% assign images = '
BLK-LF01.jpg,
BLK-L01.jpg,
BLK-T01.jpg,
BLK-S01.jpg,
BLK-HF01.jpg,
BLK-F01.jpg' | split: ',' %}
{%- capture images_360 -%}
{%- for code in codes_360 -%}
{% assign code_forloop = forloop %}
{%- for image in images -%}
{%- if image contains code and codes_360[code_forloop.index0] == code -%}
{{- image -}}{%- if forloop.last == false -%}::{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- endfor -%}
{%- endcapture -%}
{%- assign images_360 = images_360 | strip | split: '::' -%}
{{ images_360 }}
输出:
BLK-F01.jpg
BLK-L01.jpg
BLK-S01.jpg
BLK-T01.jpg