Liquid 如何计算数组中的匹配元素?

Liquid 如何计算数组中的匹配元素?,liquid,Liquid,我想取一个数组,确定其中有多少匹配元素,然后对它们进行计数,以确定哪些元素具有最多的相同元素 例如: {% assign variable = "Cats|Dogs|Mice|Cats|Cats" | split:'|' %} {% for v in variable %} // Da-da-da, magic happens here, count matching elements. {% endfor %} {{ mostCommon }} // Return the mo

我想取一个数组,确定其中有多少匹配元素,然后对它们进行计数,以确定哪些元素具有最多的相同元素

例如:

{% assign variable = "Cats|Dogs|Mice|Cats|Cats" | split:'|' %}

{% for v in variable %}

    // Da-da-da, magic happens here, count matching elements.

{% endfor %}

{{ mostCommon }} // Return the most common element in array being Cats.

以前有人这样做过吗?我只是一个设计师,所以我不能给出一个更好的例子:)

所以我有点犹豫是否要和你分享这个。。特别是因为你非常清楚地表明你“只是”一个设计师(而且可能不想涉及技术细节)。但既然你问了,这是我的解决方案

{% assign array = "Cats|Dogs|Mice|Cats|Cats|Mice|Mice" | split:'|' %}
{% capture mostCommonString %}{% include most-occurences array=array %}{% endcapture %}
{% assign mostCommon = mostCommonString | split: "|" %}
{{ mostCommon | join: ", " }}
看起来很简单,对吧?不。您需要在
\u include
文件夹中使用以下代码来启动
{%include%}

\u包括/大多数事件

这是主要的算法。基本上它:

  • 从数组中创建一个集合(仅限唯一元素)
  • 从数组中删除该集
  • 如果数组为空,则我们删除的最后一个集合是“最常出现的集合”
  • 转到1
  • 还有一点:

    \u包括/删除阵列

    这是一个很小(相对而言)的算法,可以从数组中删除第一个出现的字符串

    只是一个警告:许多算法依赖于使用
    |
    作为分隔符。我正在研究使用
    &
    ,可以使用
    |escape
    过滤器对其进行转义,但我不认为这是一个问题


    不幸的是,为了帮助
    {%capture%}
    我必须删除所有的空格,所以我有点犹豫是否要与您分享这一点。。特别是因为你非常清楚地表明你“只是”一个设计师(而且可能不想涉及技术细节)。但既然你问了,这是我的解决方案

    {% assign array = "Cats|Dogs|Mice|Cats|Cats|Mice|Mice" | split:'|' %}
    {% capture mostCommonString %}{% include most-occurences array=array %}{% endcapture %}
    {% assign mostCommon = mostCommonString | split: "|" %}
    {{ mostCommon | join: ", " }}
    
    看起来很简单,对吧?不。您需要在
    \u include
    文件夹中使用以下代码来启动
    {%include%}

    \u包括/大多数事件

    这是主要的算法。基本上它:

  • 从数组中创建一个集合(仅限唯一元素)
  • 从数组中删除该集
  • 如果数组为空,则我们删除的最后一个集合是“最常出现的集合”
  • 转到1
  • 还有一点:

    \u包括/删除阵列

    这是一个很小(相对而言)的算法,可以从数组中删除第一个出现的字符串

    只是一个警告:许多算法依赖于使用
    |
    作为分隔符。我正在研究使用
    &
    ,可以使用
    |escape
    过滤器对其进行转义,但我不认为这是一个问题


    不幸的是,为了帮助
    {%capture%}
    我必须删除所有的空格,所以我有点犹豫是否要与您分享这一点。。特别是因为你非常清楚地表明你“只是”一个设计师(而且可能不想涉及技术细节)。但既然你问了,这是我的解决方案

    {% assign array = "Cats|Dogs|Mice|Cats|Cats|Mice|Mice" | split:'|' %}
    {% capture mostCommonString %}{% include most-occurences array=array %}{% endcapture %}
    {% assign mostCommon = mostCommonString | split: "|" %}
    {{ mostCommon | join: ", " }}
    
    看起来很简单,对吧?不。您需要在
    \u include
    文件夹中使用以下代码来启动
    {%include%}

    \u包括/大多数事件

    这是主要的算法。基本上它:

  • 从数组中创建一个集合(仅限唯一元素)
  • 从数组中删除该集
  • 如果数组为空,则我们删除的最后一个集合是“最常出现的集合”
  • 转到1
  • 还有一点:

    \u包括/删除阵列

    这是一个很小(相对而言)的算法,可以从数组中删除第一个出现的字符串

    只是一个警告:许多算法依赖于使用
    |
    作为分隔符。我正在研究使用
    &
    ,可以使用
    |escape
    过滤器对其进行转义,但我不认为这是一个问题


    不幸的是,为了帮助
    {%capture%}
    我必须删除所有的空格,所以我有点犹豫是否要与您分享这一点。。特别是因为你非常清楚地表明你“只是”一个设计师(而且可能不想涉及技术细节)。但既然你问了,这是我的解决方案

    {% assign array = "Cats|Dogs|Mice|Cats|Cats|Mice|Mice" | split:'|' %}
    {% capture mostCommonString %}{% include most-occurences array=array %}{% endcapture %}
    {% assign mostCommon = mostCommonString | split: "|" %}
    {{ mostCommon | join: ", " }}
    
    看起来很简单,对吧?不。您需要在
    \u include
    文件夹中使用以下代码来启动
    {%include%}

    \u包括/大多数事件

    这是主要的算法。基本上它:

  • 从数组中创建一个集合(仅限唯一元素)
  • 从数组中删除该集
  • 如果数组为空,则我们删除的最后一个集合是“最常出现的集合”
  • 转到1
  • 还有一点:

    \u包括/删除阵列

    这是一个很小(相对而言)的算法,可以从数组中删除第一个出现的字符串

    只是一个警告:许多算法依赖于使用
    |
    作为分隔符。我正在研究使用
    &
    ,可以使用
    |escape
    过滤器对其进行转义,但我不认为这是一个问题


    不幸的是,必须删除所有空格,以帮助
    {%capture%}

    在一行中可以执行以下操作

    {% assign array = "Cats|Dogs|Mice|Cats|Cats|Mice|Mice|Dog" | split: '|' %}
    {% assign grouped_elements = array | group_by: tag | sort: 'size' | reverse %}
    
    {% assign highest_count = grouped_elements[0].size %}
    {% for elem in grouped_elements %}
        {% if elem.size == highest_count %}
            {{ elem.name }} {{ elem.size }}
        {% else %}
            {% break %}
        {% endif %}
    {% endfor %}
    
    基本上,我们正在做的是:

  • 将字符串转换为数组
  • 使用
    Group_by
  • 大小
    键对其排序
  • 把它倒过来,这样我们就有了降序
  • 获取发生的最大元素的大小
  • 对于每个元素,将其大小与出现的最大元素进行比较
  • 如果它们相等,则打印元素及其大小

  • 以下是您可以在一行中完成的操作

    {% assign array = "Cats|Dogs|Mice|Cats|Cats|Mice|Mice|Dog" | split: '|' %}
    {% assign grouped_elements = array | group_by: tag | sort: 'size' | reverse %}
    
    {% assign highest_count = grouped_elements[0].size %}
    {% for elem in grouped_elements %}
        {% if elem.size == highest_count %}
            {{ elem.name }} {{ elem.size }}
        {% else %}
            {% break %}
        {% endif %}
    {% endfor %}
    
    基本上,我们正在做的是:

  • 将字符串转换为数组
  • 使用
    Group_by
  • 大小
    键对其排序
  • 把它倒过来,这样我们就有了降序
  • 获取发生的最大元素的大小
  • 对于每个元素,比较其大小