You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hugo:如何将map转换为键值交替的数组?

如何将Go模板中的Map转换为键值对数组?

我们可以用dict函数快速创建键值对Map:

{{ $m := dict "a" "b" "c" "d" }}

但querify函数不支持直接传入Map,我们需要先把Map转换成键值依次排列的数组(比如["a", "b", "c", "d"]),再传入该函数。

基础实现(无序)

通过range遍历Map的键值对,逐个把键和值追加到空切片里即可:

{{ $m := dict "a" "b" "c" "d" }}
{{ $arr := slice }}
{{ range $k, $v := $m }}
  {{ $arr = $arr | append $k $v }}
{{ end }}
{{/* 展开切片传入querify */}}
{{ $queryStr := querify $arr... }}
  • slice用于初始化一个空切片
  • 遍历Map时,每次把当前键$k和值$v追加到切片中
  • 最后用...语法展开切片,作为querify的参数传入

有序实现(按键排序)

Go模板中Map的遍历顺序是随机的,如果需要键值对按固定顺序排列,可以先提取所有键并排序,再按排序后的键遍历Map:

{{ $m := dict "a" "b" "c" "d" }}
{{/* 提取所有键到切片 */}}
{{ $keys := slice }}
{{ range $k := $m }}
  {{ $keys = $keys | append $k }}
{{ end }}
{{/* 对键进行排序 */}}
{{ $sortedKeys := sort $keys }}
{{/* 按排序后的键生成有序数组 */}}
{{ $arr := slice }}
{{ range $k := $sortedKeys }}
  {{ $arr = $arr | append $k (index $m $k) }}
{{ end }}
{{ $queryStr := querify $arr... }}

内容的提问来源于stack exchange,提问作者Alexey Inkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:50:09