使用 Jekyll,如何使用 for 循环更改数组的内容?
Using Jekyll, how do you alter an array's contents using a for loop?
假设我的范围内有一个数组 thingy.foo = ['abc', 'def']
。
我的目标是能够遍历 thingy.foo
中的所有项目并对其应用一些条件逻辑,覆盖数组中的现有项目...像这样:
{% for item in thingy.foo %}
{% assign thingy.foo[forloop.index0] = site.data.lookups[item] | default: item %}
{% endfor %}
我正在做的项目有点无关紧要,我遇到问题的部分是更新数组中的项目。代码编译并运行。在循环中,我可以确认 "lookup" 部分有效(如果我将它分配给 t
并检查 t
然后我得到一个查找值,但 thingy.foo[0]
仍然是原始值)。
是否可以在 Jekyll 中 update/overwrite 数组?
(这是为了在 GitHub 页面上使用,所以我不能使用自定义插件)。
看起来您无法改变现有数组...但您可以遍历初始数组并将项目改变为新数组,如下所示:
{% assign newArray = '' | split: '' %}
{% for item in thingy.foo %}
{% assign newItem = site.data.lookups[item] | default: item %}
{% assign newArray = newArray | push: newItem %}
{% endfor %}
newArray
现在包含来自 thingy.foo
的更改项目列表。
假设我的范围内有一个数组 thingy.foo = ['abc', 'def']
。
我的目标是能够遍历 thingy.foo
中的所有项目并对其应用一些条件逻辑,覆盖数组中的现有项目...像这样:
{% for item in thingy.foo %}
{% assign thingy.foo[forloop.index0] = site.data.lookups[item] | default: item %}
{% endfor %}
我正在做的项目有点无关紧要,我遇到问题的部分是更新数组中的项目。代码编译并运行。在循环中,我可以确认 "lookup" 部分有效(如果我将它分配给 t
并检查 t
然后我得到一个查找值,但 thingy.foo[0]
仍然是原始值)。
是否可以在 Jekyll 中 update/overwrite 数组?
(这是为了在 GitHub 页面上使用,所以我不能使用自定义插件)。
看起来您无法改变现有数组...但您可以遍历初始数组并将项目改变为新数组,如下所示:
{% assign newArray = '' | split: '' %}
{% for item in thingy.foo %}
{% assign newItem = site.data.lookups[item] | default: item %}
{% assign newArray = newArray | push: newItem %}
{% endfor %}
newArray
现在包含来自 thingy.foo
的更改项目列表。