【问题标题】:Count items in array with Liquid使用 Liquid 计算数组中的项目
【发布时间】:2019-09-02 09:35:35
【问题描述】:

我有一个 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 不是空的,我只为每个a_countb_count 调用一次increment,这应该将初始值设置为0

print(@template.errors) 的输出只有:

{:strict_variables=>true}[]

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

【问题讨论】:

    标签: ruby liquid


    【解决方案1】:

    你可以把它和JS结合起来吗? 你可以将数组传递给一个 JS 函数,然后在那里做剩下的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多