簡體   English   中英

Liquid Sort Array of strings 按字母順序和 label 它們

[英]Liquid Sort Array of strings alphabetically and label them

我有一個排序的字符串數組,現在我想在標記它們時將它們打印出來。

例如,如果我的數組是 ['1_array_content', '3_array_content', 'apple', 'ant', 'bucket']

然后我想像這樣打印出來:如何將第一個字母添加為 label? 以及這對數字首字母有何作用(所有字母都將屬於 [0-9] label。

[0-9]

1_array_content

3_array_content

[一個]

ant

蘋果

[乙]

好的,所以你有兩個問題需要在這里解決:

  • 主要是將第一個字符顯示一次為 label
  • 第二個涉及號碼格的

這是一個可能的解決方案(未經測試,解釋如下):

{% assign numbers_label_displayed = false %}
{% assign letter_labels = '' %}

{% for item in array.items %}

    {% case item.first %}

    {% when '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' %}

        {% unless numbers_label_displayed %}
            [0-9]
            {% assign numbers_label_displayed = true %}
        {% endunless %}

    {% else %}

        {% unless letter_labels contains item.first %}
            {{ item.first | append:']' | prepend:'[' }}
            {% assign letter_labels = letter_labels | append: item.first | append: ' ' %}
        {% endunless %}

    {% endcase %}

    {{ item }}

{% endfor %}

首先,我初始化兩個變量,這將有助於檢查標簽是否已經顯示。 第一個是 boolean 處理“數字”情況,第二個存儲所有已顯示的標簽。

然后我通過數組初始化循環並處理兩種情況:數字和字母。 我使用控制流案例/when,因為它比 if/else 更簡潔、更輕松,並允許在全局范圍內管理這兩個問題。

我在第一個 when 中列出數字並分配一個 else 來處理這些字母。

為了處理數字大小寫,我為 boolean var 設置了一個除非條件,然后我為數字顯示 label 並將我的 boolean 變量設置為 true,因此下一次迭代不會再次顯示它。

為了處理字母大小寫,我設置了一個除非條件檢查字母是否已經存儲在字符串 var 中。 如果沒有,我會顯示該字母並將其添加到字符串 var。 如果是這樣,除非條件允許不再將其顯示為 label。

高溫高壓

暫無
暫無

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

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