如何从 for 循环创建数组?
How do I create an array from a forloop?
我有一个图像文件夹,我想在页面上呈现这些图像。我希望这些图片以 ordered/filtered 的方式呈现。为此,我知道图像首先需要放在一个数组中。
因此我从一个空数组开始:
{% assign my_array = "" %}
然后我遍历图像文件夹,并尝试以不同的方式将每个图像推入 my_array
。示例:
{% for image in site.static_files %}
{% if image.path contains "assets/images/target-folder" %}
<!-- Push image into array -->
{{ my_array | push: image }}
{% endif %}
{% endfor %}
理想情况下,我可以按预期使用此数组:
{% for image in my_array | sort:"date" | reverse %}
<!-- show image -->
{% endfor %}
我知道我可以用图像制作一个数据文件,但我想避免需要采取额外的步骤。感谢阅读。
您快完成了,您创建数组的方式是唯一需要解决的问题。
这 {% assign my_array = "" %}
创建一个空字符串。在 Liquid 中创建数组的一种简单方法是拆分以上内容:
{% assign my_array = "" | split: ',' %}
现在您可以按以下方式将项目推送到 for 循环内的数组中:
{% for image in site.static_files %}
{% if image.path contains "assets/images/target-folder" %}
<!-- Push image into array -->
{% assign my_array = my_array | push: image %}
{% endif %}
{% endfor %}
另请注意,您可以使用 where
/where_exp
filters:
无需循环
{% assign my_array = site.static_files |
where_exp: "item", "item.path contains 'assets/images/target-folder'" %}
或:
{% assign target_folder = "assets/images/target-folder" %}
{% assign my_array = site.static_files |
where_exp: "item", "item.path contains target_foler" %}
(尽管与已接受的答案不同,这并不完全符合问题的 标题,但在所描述的示例中它仍然是一个有用的选项。)
我有一个图像文件夹,我想在页面上呈现这些图像。我希望这些图片以 ordered/filtered 的方式呈现。为此,我知道图像首先需要放在一个数组中。
因此我从一个空数组开始:
{% assign my_array = "" %}
然后我遍历图像文件夹,并尝试以不同的方式将每个图像推入 my_array
。示例:
{% for image in site.static_files %}
{% if image.path contains "assets/images/target-folder" %}
<!-- Push image into array -->
{{ my_array | push: image }}
{% endif %}
{% endfor %}
理想情况下,我可以按预期使用此数组:
{% for image in my_array | sort:"date" | reverse %}
<!-- show image -->
{% endfor %}
我知道我可以用图像制作一个数据文件,但我想避免需要采取额外的步骤。感谢阅读。
您快完成了,您创建数组的方式是唯一需要解决的问题。
这 {% assign my_array = "" %}
创建一个空字符串。在 Liquid 中创建数组的一种简单方法是拆分以上内容:
{% assign my_array = "" | split: ',' %}
现在您可以按以下方式将项目推送到 for 循环内的数组中:
{% for image in site.static_files %}
{% if image.path contains "assets/images/target-folder" %}
<!-- Push image into array -->
{% assign my_array = my_array | push: image %}
{% endif %}
{% endfor %}
另请注意,您可以使用 where
/where_exp
filters:
{% assign my_array = site.static_files |
where_exp: "item", "item.path contains 'assets/images/target-folder'" %}
或:
{% assign target_folder = "assets/images/target-folder" %}
{% assign my_array = site.static_files |
where_exp: "item", "item.path contains target_foler" %}
(尽管与已接受的答案不同,这并不完全符合问题的 标题,但在所描述的示例中它仍然是一个有用的选项。)