Liquid - сортировка массива на основе отдельного массива - PullRequest
0 голосов
/ 24 января 2020

Я ищу способ фильтрации и сортировки массива изображений на основе отдельного массива.

Изображения:

{% 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

Я бы хотел отсортировать их по массиву code_360:

100-0000-BLK-F01.jpg
100-0000-BLK-L01.jpg
100-0000-BLK-S01.jpg
100-0000-BLK-T01.jpg

1 Ответ

0 голосов
/ 24 января 2020

Разобрался, переключив порядок внешнего forl oop и вложенного forl oop. Затем добавляем ссылку на внешний forl oop, чтобы проверить, равен ли индекс (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...