hugo/docs/content/functions/union.md

1.5 KiB

title description godocref date publishdate lastmod categories menu signature workson hugoversion relatedfuncs deprecated aliases
union Given two arrays or slices, returns a new array that contains the elements or objects that belong to either or both arrays/slices. 2017-02-01 2017-02-01 2017-03-12
functions
docs
parent
functions
union SET1 SET2
0.20
intersect
where
false

Given two arrays (or slices) A and B, this function will return a new array that contains the elements or objects that belong to either A or to B or to both. The elements supported are strings, integers, and floats (only float64).

{{ union (slice 1 2 3) (slice 3 4 5) }}
<!-- returns [1 2 3 4 5] -->

{{ union (slice 1 2 3) nil }}
<!-- returns [1 2 3] -->

{{ union nil (slice 1 2 3) }}
<!-- returns [1 2 3] -->

{{ union nil nil }}
<!-- returns an error because both arrays/slices have to be of the same type -->

This is also very useful to use as OR filters when combined with where:

{{ $pages := where .Site.RegularPages "Type" "not in" (slice "page" "about") }}
{{ $pages := $pages | union (where .Site.RegularPages "Params.pinned" true) }}
{{ $pages := $pages | intersect (where .Site.RegularPages "Params.images" "!=" nil) }}

The above fetches regular pages not of page or about type unless they are pinned. And finally, we exclude all pages with no images set in Page params.

See intersect for AND.