Используя Jekyll, как вы изменяете содержимое массива, используя цикл for?

Скажи у меня есть массив 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 ответ

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

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

Другие вопросы по тегам