在 nunjucks 中循环对象时如何限制迭代次数

Otu*_*tus 3 html json nunjucks

我有一个像这样的 JSON 对象

{
    "data": [
        {
            "src": "src1",
            "name": "name 1"
        }, 
        {
            "src": "src2",
            "name": "name 2"
        }, 
        {
            "src": "src3",
            "name": "name 3"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

现在我用 Nunjucks 循环遍历它:

{% for object in data %}
    {{object.src}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但我想在这种情况下将迭代次数限制为 2(以创建对象的候选列表)。

我如何用 Nunjucks 做到这一点?

我知道有一个范围选项,但在这种情况下我找不到如何使用它。

Aik*_*wai 5

您可以通过几种不同的方式完成此操作:

A) 使用loop.index0特殊变量

for 循环中,您可以loop.index0改用limit-var

{% for obj in data %}
    {% if loop.index0 < 2 %}    
        {{obj.src}}: {{obj.name}}
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

B) 添加自定义过滤器

但更具可读性的是添加自定义过滤器 limit并使用它

{% for obj in data %}
    {% if loop.index0 < 2 %}    
        {{obj.src}}: {{obj.name}}
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

C) 使用内置slice过滤器

{% for obj in data.slice(0, 2) %}
    {{obj.src}}: {{obj.name}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)