Используя Jekyll, как вы изменяете содержимое массива, используя цикл for? - PullRequest
0 голосов
/ 20 мая 2019

Скажем, у меня есть массив thingy.foo = ['abc', 'def'] в моей области действия.

Моя цель - иметь возможность циклически перебирать все элементы в thingy.foo и применять к нему некоторую условную логику, перезаписывая существующий элемент в массиве ... Примерно так:

{% for item in thingy.foo %}
  {% assign thingy.foo[forloop.index0] = site.data.lookups[item] | default: item %}
{% endfor %}

То, что я делаю, делает элемент немного нерелевантным, у меня возникают проблемы с обновлением элемента в массиве. Код компилируется и запускается. Внутри цикла я могу подтвердить, что часть «поиска» работает (если я присваиваю ее t и проверяю t, тогда я получаю проверенное значение, но thingy.foo[0] все еще является исходным значением).

Возможно ли обновить / перезаписать массивы в Jekyll?

(это предназначено для использования на страницах GitHub, поэтому я не могу использовать пользовательские плагины).

1 Ответ

0 голосов
/ 20 мая 2019

Похоже, вы не можете изменять существующие массивы ... но вы можете зацикливать исходный массив и преобразовывать элементы в новый массив, например так:

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

...