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

时间:2018-01-24 10:51:16

标签: html json nunjucks

我有一个像这样的JSON对象

{
    "data": [
        {
            "src": "src1",
            "name": "name 1"
        }, 
        {
            "src": "src2",
            "name": "name 2"
        }, 
        {
            "src": "src3",
            "name": "name 3"
        }
    ]
}

现在Iam用Nunjucks循环播放:

{% for object in data %}
    {{object.src}}
{% endfor %}

但是我希望在这种情况下将迭代次数限制为2(以创建对象的候选名单)。

我如何与Nunjucks合作?

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

1 个答案:

答案 0 :(得分:0)

您可以使用loop.index0代替limit - var

{% for obj in data %}
    {% if loop.index0 < 2 %}    
    {{obj.src}}: {{obj.name}}
    {% endif %}
{% endfor %}

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

var nunjucks  = require('nunjucks');
var env = nunjucks.configure();

var data = [
    {src: "src1", name: "name 1"}, 
    {src: "src2", name: "name 2"}, 
    {src: "src3", name: "name 3"}
];

env.addFilter('limit', function(arr, limit) {
    return arr.slice(0, limit);
});

var res = nunjucks.renderString(`
    {% for obj in data | limit(2) %}
    {{obj.src}}: {{obj.name}}
    {% endfor %}`, 
    {data}
);

console.log(res);

或使用原生slice

{% for obj in data.slice(0, 2) %}
    {{obj.src}}: {{obj.name}}
{% endfor %}