Return 来自 Jekyll 集合/数据源的唯一值

Return unique values from Jekyll collection / data source

我在 Jekyll 站点的 _data 文件夹中有一个 JSON 数据源,如下所示:

{
  "1": {
    "name": "March",
    "year": "2014"
  },
  "2": {
    "name": "May",
    "year": "2013"
  },
    ....
  }

我想列出 year 属性的唯一值。以下returns年列表;我只想要独一无二的岁月

<ul>
{% for playlist in site.data.playlists %}
  <li>
    {{ playlist[1].year }}
  </li>
{% endfor %}
</ul>

尝试分配变量以便我可以使用给定的变量 here 但没有成功,而且我不确定它是否能在 Jekyll 中正常工作。


你应该只处理一次相等的元素,这些代码可能有效:

<ul>
{% assign s_year = null %}
{% assign t_year = null %}
{% for playlist in site.data.playlists %}
{% capture t_year %}{{playlist[1].year}}{% endcapture %}
{% if t_year == s_year %}{% else %}
<li>
{{ t_year }}
</li>
{% endif %}
{% capture s_year %}{{ t_year }}{% endcapture %}
{% endfor %}
</ul>

您似乎想按年份对播放列表进行分组。

_data/playlists.json

[
  {
    "name": "March",
    "year": "2014"
  },
  {
    "name": "May",
    "year": "2013"
  },
  {
    "name": "December",
    "year": "2013"
  }
]

请注意,我们这里有一个哈希数组。

您现在可以按年份循环播放列表:

{% comment %} ++++ Group playlists by year ++++ {% endcomment %}
{% assign grouped = site.data.playlists | group_by: "year" %}

<ul>
{% for year in grouped %}
  <li>
    {{ year.name }}
    <ul>
    {% for item in year.items %}
        <li>{{ item.name }}</li>
    {% endfor %}
    </ul>
  </li>
{% endfor %}
</ul>