繁体   English   中英

用Liquid计数数组中的项目

[英]Count items in array with Liquid

我有一个像下面这样的json对象:

    "results"=>{
        "data"=>[
            {
                "id"=>"letters",
                "values"=>["A", "B", "B", "X"]
            },
        ]
    }

我试图算出A的个数和B的个数,然后将它们相加。

到目前为止,这是我的代码:

require 'liquid'
Liquid::Template.error_mode = :strict
@template = Liquid::Template.parse('
    {% assign letters = results.data | where: "id", "letters" %}
    {{ letters }}
    {% increment a_count %}
    {% increment b_count %}
    {% for letter in letters.values %}
        {% if letter contains "A" %}
            {% increment a_count %}
        {% endif %}
        {% if letter contains "B" %}
            {% increment b_count %}
        {% endif %}
    {% else %}
        The collection is empty.
    {% endfor %}
    {% assign count = a_count | plus: b_count %}
    {{ a_count}} + {{ b_count }} = {{ count }}
')
print(@template.render(
    "results"=> {
        "data"=> [
            {
                "id"=> "letters",
                "values"=> ["A", "B", "B", "X"]
            },
        ]
    }
), { strict_variables: true })
print(@template.errors) 

但这不起作用,我得到以下输出:



    {"id"=>"letters", "values"=>["A", "B", "B", "X"]}
    0
    0

        The collection is empty.


    1 + 1 = 2

这是令人困惑的,因为results.values不为空,并且我只为应将初始值设置为0每个a_countb_count调用一次increment

print(@template.errors)的输出仅为:

{:strict_variables=>true}[]

我如何计算letters.values数组中有多少个A和多少个B

您可以将其与JS结合吗? 您可以将数组传递给JS函数,然后再休息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM