簡體   English   中英

在Jekyll上對JSON數組排序

[英]Sort JSON array on Jekyll

我工作的一個化身項目,並tools.json_data文件夾中。 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>

您可以分別對粘性和非粘性項目進行排序。

{% 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僅在根目錄包含數組(沒有“ tools”鍵),則可以使用site.data.tools而不是site.data.tools.tools

您可以進行連續排序。

{% 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM