Используя 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
,