Используя 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, поэтому я не могу использовать пользовательские плагины).


person Nick    schedule 19.05.2019    source источник


Ответы (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.

person Nick    schedule 19.05.2019