【问题标题】:Sort JSON array on Jekyll在 Jekyll 上对 JSON 数组进行排序
【发布时间】:2017-05-04 02:17:18
【问题描述】:

我正在开发一个 Jekyll 项目,并且在 _data 文件夹中有 tools.json。 JSON 文件的格式如下:

{
"tools": [
    {
        "title": "DER tool",
        "url": "https://der.us/",
        "sticky": "false"
    },
    {
        "title": "ZXY tool",
        "url": "https://zxy.us/",
        "sticky": "false"
    },
    {
        "title": "ABC tools",
        "url": "https://abc.us/",
        "sticky": "false"
    },
    {
        "title": "RSW tools",
        "url": "https://rsw.us/",
        "sticky": "true"
    }
]}

我想按字母顺序对项目进行排序,但如果sticky: true 它应该在顶部。理想情况下,输出应该是这样的:

<ul>
<li>RSW tool</li>
<li>ABC tool</li>
<li>DER tool</li>
<li>ZXY tool</li>
</ul>

【问题讨论】:

  • 会有多个粘性物品吗?
  • 是的,会有的。

标签: arrays json sorting jekyll


【解决方案1】:

您可以分别对粘性和非粘性项目进行排序。

{% assign sticky_tools = site.data.tools.tools | where: 'sticky', true | sort: 'title' %}
{% assign tools = site.data.tools.tools | where: 'sticky', false | sort: 'title' %}

<ul>
    {% for t in sticky_tools %}
    <li>{{ t.title }}</li>
    {% endfor %}

    {% for t in tools %}
    <li>{{ t.title }}</li>
    {% endfor %}
</ul>

顺便说一句,如果您的 tools.json 仅包含根中的数组(没有“工具”键),您可以使用 site.data.tools 而不是 site.data.tools.tools 访问它。

【讨论】:

  • 你太棒了!谢谢!
【解决方案2】:

您可以进行连续排序。

{% assign sortedByTitleTools = site.data.tools.tools | sort: "title" | reverse %}
{% assign sortedByStickyTools = sortedByTitleTools | sort: "sticky" | reverse %}
<ul>
{% for t in sortedByStickyTools %}
  <li>{{ t.title }}</li>
{% endfor %}
</ul>

【讨论】:

    猜你喜欢
    • 2021-09-10
    • 1970-01-01
    • 2016-07-22
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 2013-08-30
    • 1970-01-01
    相关资源
    最近更新 更多