我正在尝试遍历作为变量传递到include中的数组,然后检查该变量是否与某些YAML匹配-如果它确实要打印结果。我可以使用下面的代码手动执行此操作,但是我需要一个在较大数组下可以使用的解决方案。
首先,我从页面浏览以下信息:
<!--- Pass these variables into include.html --->
{% assign var_array = "D" %}
{% assign data = "object" %}
{% include include.html %}
我想消除所有 eslif ,并替换为将遍历整个数组的内容。
<!--- include.html --->
{% assign data = site.data.sheet.[data].last.items %}
{% assign sorted = var_array | split:"," %}
{% for item in data %}
{% if item.foo == sorted[0] %}
<p>{{ item.foo }}</p>
{% elsif item.foo == sorted[1] %}
<p>{{ item.foo }}</p>
{% elsif item.foo == sorted[2] %}
<p>{{ item.foo }}</p>
{% elsif item.foo == sorted[3] %}
<p>{{ item.foo }}</p>
{% endif %}
{% endfor %}
以下是YAML数据:
<!--- sheet.yaml --->
object:
- items:
- foo: 'A'
- bar: 'text'
- items:
- foo: 'B'
bar: 'text'
- items:
- foo: 'C'
bar: 'text'
- items:
- foo: 'D'
bar: 'text'
这是所需的输出:
<!-- Desired Output --->
<p>D</p>
答案 0 :(得分:0)
我认为您需要的是一个嵌套的for
循环。
这应该可以解决问题:
{% for item in data %}
{% for s in sorted %}
{% if item.foo == s %}
<p>{{ item.foo }}</p>
{% endif %}
{% endfor %}
{% endfor %}
如果要循环的两个数组很大,则会产生许多迭代。但是,在Jekyll环境中,只有在开发项目的特定部分时才能执行此操作。
顺便说一句:在您的代码中,您没有将任何变量传递给包含的文件。 有关如何正确执行此操作,请查看Jekyll文档:https://jekyllrb.com/docs/includes/