Jekyll 尽可能快地按路径/名称获取集合页变量

Jekyll 尽可能快地按路径/名称获取集合页变量,jekyll,github-pages,Jekyll,Github Pages,假设我有一个名为CardMaster(对象数组)的Jekyll数据和名为charas的Jekyll集合 我有一个页面需要为CardMaster的每个cardInfo循环。对于每个cardInfo,在charas集合中都有一个独特的页面,其中包含我需要的更多信息 这是我目前使用的代码,但速度非常慢(O(N^2),N大约是几百) {%assign cardInfos=site.data.CardMaster |其中:“stockOrder”,1%} {cardInfos%中c的%s} {%cap

假设我有一个名为
CardMaster
(对象数组)的Jekyll数据和名为
charas
的Jekyll集合

我有一个页面需要为
CardMaster
的每个
cardInfo
循环。对于每个
cardInfo
,在
charas
集合中都有一个独特的页面,其中包含我需要的更多信息

这是我目前使用的代码,但速度非常慢(O(N^2),N大约是几百)

{%assign cardInfos=site.data.CardMaster |其中:“stockOrder”,1%}
    {cardInfos%中c的%s}
  • {%capture page_cond%}item.name==“{{c.resourceName}}.md”{%endcapture%} {%assign page=site.charas |其中_exp:“项目”,第| cond | first%} {%endfor%}
我希望做的是使
{%assign page=site.charas}where|exp:“item”,page|cond | first%}
更快,就像有可能做
{%assign page=site.charas|page_映射[{{c.resourceName}.md]%}
一样,将时间复杂度从O(N)降低到O(常量)

将Jekyll数据
CardMaster
合并到Jekyll collection
charas
或反之亦然是不可行的,因为
CardMaster
是由机器定期从外部源生成的,而
charas
是由人工维护的

该网站托管在Github页面上,因此大多数Jekyll插件都是被禁止的

{% assign cardInfos = site.data.CardMaster | where: "stockOrder", 1 %}
<ul>
<!-- this will loop N times -->
{% for c in cardInfos %}
<li>
  <!-- print some info from `c` -->

  {% capture page_cond %}item.name == "{{ c.resourceName }}.md"{% endcapture %}
  <!-- this will take O(N) time -->
  {% assign page = site.charas | where_exp: "item", page_cond | first %}

  <!-- print some info from `page` -->
{% endfor %}
</ul>