merge
Keys a slice of maps by the named field, producing a lookup map.
It is an alias for the map modifier, useful when the name "map" reads awkwardly or clashes with other syntax.
InputArgumentsReturns
Source[]map[string]anystringmap[string]map[string]anyBasicSource
Keys a slice of maps by the named field exactly as Map does.
Given
{"users": [{"id": "u1", "name": "Alice"}, {"id": "u2", "name": "Bob"}]}Template
{{ users | merge:'id' }}Result
{
"u1": {
"id": "u1",
"name": "Alice"
},
"u2": {
"id": "u2",
"name": "Bob"
}
}By skuSource
Turns a list of products into a table keyed by sku.
Given
{"products": [{"sku": "A1", "name": "Bolt"}, {"sku": "B2", "name": "Nut"}]}Template
{{ products | merge:'sku' }}Result
{
"A1": {
"name": "Bolt",
"sku": "A1"
},
"B2": {
"name": "Nut",
"sku": "B2"
}
}MissingSource
Skips any element without the key field.
Given
{"products": [{"sku": "A1", "name": "Bolt"}, {"name": "Loose"}]}Template
{{ products | merge:'sku' }}Result
{
"A1": {
"name": "Bolt",
"sku": "A1"
}
}OverwriteSource
Keeps the last element when a key repeats.
Given
{"products": [{"sku": "A1", "name": "Old"}, {"sku": "A1", "name": "New"}]}Template
{{ products | merge:'sku' }}Result
{
"A1": {
"name": "New",
"sku": "A1"
}
}