如何获取头盔循环中的最后一个元素?
How to get the last element in helm loop?
values.yaml:
products:
apples:
- green
- red
- yellow
我想将其转换为图表中的 JSON 文件:
"products": {
"apples": [
"green",
"red",
"yellow"
]
},
在 jinja2 中它看起来像这样:
"products": {
"apples": [
{% for apple in products.apples%}
"{{apple}}"{% if not loop.last %},{% endif %}
{% endfor %}
]
},
在 jinja2 中使用 loop.last。如何在 helm 中完成?
真正问题的最简单答案是使用 Helm toJson
功能。
"products": {
{{ toPrettyJson .Values.products | indent 2 }}
}
手动执行此操作:在核心 Go text/template
语言中,您可以在使用 range
遍历结构时分配临时变量。有一个 two-variable 形式可以同时接收索引和值。然后您可以将索引与列表的长度进行比较。
"products": {
"apples": {
{{- $last := sub (len .Values.products.apples) 1 }}
{{- $index, $apple := range .Values.products.apples }}
{{ quote $apple }}{{ if ne $index $last }},{{ end }}
{{- end }}
}
}
values.yaml:
products:
apples:
- green
- red
- yellow
我想将其转换为图表中的 JSON 文件:
"products": {
"apples": [
"green",
"red",
"yellow"
]
},
在 jinja2 中它看起来像这样:
"products": {
"apples": [
{% for apple in products.apples%}
"{{apple}}"{% if not loop.last %},{% endif %}
{% endfor %}
]
},
在 jinja2 中使用 loop.last。如何在 helm 中完成?
真正问题的最简单答案是使用 Helm toJson
功能。
"products": {
{{ toPrettyJson .Values.products | indent 2 }}
}
手动执行此操作:在核心 Go text/template
语言中,您可以在使用 range
遍历结构时分配临时变量。有一个 two-variable 形式可以同时接收索引和值。然后您可以将索引与列表的长度进行比较。
"products": {
"apples": {
{{- $last := sub (len .Values.products.apples) 1 }}
{{- $index, $apple := range .Values.products.apples }}
{{ quote $apple }}{{ if ne $index $last }},{{ end }}
{{- end }}
}
}