To add items in Nunjucks, use the .push()
function.
{% set arr = [1,2] %}
{% set arr = (arr.push(3), arr) %}
Final array:
arr = [1,2,3]
Unfortunately, I did not found any references in the official Nunjucks documentation for this useful function π€·π»ββοΈ
{% set animals = ['cat π±', 'dog πΆ', 'lion π¦'] %}
{% set domesticAnimals = [] %}
{% for animal in animals %}
{% if animal !== 'lion' %}
{% set domesticAnimals = (domesticAnimals.push(animal), domesticAnimals) %}
{% endif %}
{% endfor %}
Final array:
domesticAnimals = ['cat π±', 'dog πΆ']
𧨠!important
If you use
{% set .... %}
inside a for-loop block, pay attention to have defined it outside before entering the loop.
I wrote a post about it: π Nunjuks scoped variable declarations
π More info
Docs about Twig 'push' filter. Note that this filter is not present into the official Twig documentation π€·π»ββοΈ
Top comments (12)
Instead of
push
useconcat
, it will simplify things a bit:Thanks for sharing Felipe! I didn't know about the
concact()
method. I've just checked the official Mozilla blog, and they wrote only about join() for concatenate string. Thanks for make me discovering it!Thanx for inspiration!
I've ended up with the following:
Result in output:
I din't know the reject() method! Thanks for sharing Pavel!
Thank you! I had no idea that you can execute arbitrary JS right in the tags.
Do you know where I can read more about that? Youβre not just reassigning the value with the pushed item, itβs also wrapped in brackets and you repeat arrayβs name after a comma. Where this comes from? π€
hey Vadim, thank you for your feedback! I just added at the end of the post where I found the
push
Β syntax π I can't really tell why this filter is not available on the official docs.It is a great post. though I am stuck at a point where I need to pass this final array to another statement such as:
window.master.init({{domesticAnimals}});
. this showswindow.master.init(cat,dog);
instead of array. what should I do to pass an array in the above statement. I need data like `window.master.init(['cat','dog']).Exactly what I was looking for. Worked like a charm !
Thank you !
I'm glad it was helpful! πͺπ» Thank you
This is very useful - thanks
I'm glad that it has been helpful to you. π
is there a similar filter to add additional key/value properties in an object?