Nunjucks: выберите определенные элементы из массива для цикла - PullRequest
0 голосов
/ 15 октября 2019

Мне нужно выбрать конкретные элементы из большого массива, скажем, [5, 21, 83, 74, 12], и мой список выглядит так:

{
  "list:" [
    { "title": "Blue" },
    { "title": "Green" },
    { "title": "Yellow" } ...
  ]
}

Я думал о for loop, но я не уверен в синтаксисе или фильтрах, которые мне следует использовать. Как мне изменить этот код, чтобы выполнить вышесказанное?

{% for item in list %}
    {% item %}
{% endfor %}

1 Ответ

0 голосов
/ 17 октября 2019

Вы можете добавить пользовательский фильтр, если вам нужно применить фильтр более одного раза.

var nunjucks  = require('nunjucks');
var env = nunjucks.configure();
env.addFilter('myfilter', arr => arr.filter(e => e.title == 'Green'));

var html = env.renderString(`
    {% for item in list | myfilter %} 
        {{item.id}} {{ item.title}} 
    {% endfor %}
    `, 
    { 
        list: [
            { id: 1, title: 'Blue' },
            { id: 2, title: 'Green' },
            { id: 3, title: 'Yellow' },
            { id: 4, title: 'Green' }
        ]
    }
);

console.log(html);

Другой способ - использовать if каждый раз

{% for item in list %}
    {{ item if item.title == 'Green' }}
{% endfor %}

или

{% for item in list %}
    {% if item.title == 'Green' %}
        {{ item }}
    {% endif %} 
{% endfor %}
...