How can I look up the value of a map by using a variable key without iterating?
So one can lookup a constant key on variable map $x with $x.key1
, but is it possible to do amap.$key
?
How can I look up the value of a map by using a variable key without iterating?
So one can lookup a constant key on variable map $x with $x.key1
, but is it possible to do amap.$key
?
You use the index
function:
{{index .Amap "key1"}}
index
Returns the result of indexing its first argument by the
following arguments. Thus "index x 1 2 3" is, in Go syntax,
x[1][2][3]. Each indexed item must be a map, slice, or array.
{{template "name" how_to_index_here?}}
–
Identification {{template "name" (index .Amap "key1")}}
It should be noted that the simpler syntax of accessing map keys directly from dot also works: {{template "name" .Amap.key1}}
–
Stoltz {{index .Amap "key1"}}.Myfield
–
Cupriferous {{ with (index .Amap "key1") }}{{ .Myfield }}{{ end }}
–
Adham {{ with (index .Amap "key-with-hyphens") }} {{ .Myfield }} {{ end }}
–
Seasonal {{ index .Amap .var2.username }}
and if you want a specific child of the result (say Amap[var2.username] is itself yaml instead of a value), you can use {{ (index .Amap .var2.username).some_field }}
–
Costermansville kubectl get configmap myMap --template='{{index .data "foo.bar"}}
–
Fomentation tags = { "upstream-source-ami-id" = "{{ index .SourceAMITags \"source-ami-id\" }}" }
–
Octavus A simpler way would be to do: {{.Amap.key1}}
. However, this will only work if the key is alphanumeric. If not, you'll need to access it using index
.
From the documentation:
- The name of a key of the data, which must be a map, preceded
by a period, such as
.Key
The result is the map element value indexed by the key.
Key invocations may be chained and combined with fields to any
depth:
.Field1.Key1.Field2.Key2
Although the key must be an alphanumeric identifier, unlike with
field names they do not need to start with an upper case letter.
Keys can also be evaluated on variables, including chaining:
$x.key1.key2
{{index .Amap "key1"}}
must write as {{index .Amap \"key1\"}}
in string value, and the latter format not working under template. –
Odont _
technically does not count as alphanumeric. –
Uncle © 2022 - 2024 — McMap. All rights reserved.