[英]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_count
和b_count
调用一次increment
。
print(@template.errors)
的输出仅为:
{:strict_variables=>true}[]
我如何计算letters.values
数组中有多少个A
和多少个B
?
您可以将其与JS结合吗? 您可以将数组传递给JS函数,然后再休息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.