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

如何构造数据结构:将父级map的name值拼接至stages项并扁平化

Terraform 实现环境与阶段的扁平化拼接

需求说明

给定如下Terraform变量:

environments = [
      {
        name   = "preprod"
        stages = ["blue", "green"]
      },
      {
        name   = "qat"
        stages = ["blue", "green"]
      }
    ]

需要将每个环境的name与对应stages列表中的每个元素拼接,最终得到扁平化的列表结构(注:你提供的示例结果中包含prod-blue和prod-green,但输入变量里无prod环境,推测是笔误,以下实现将基于输入变量生成对应结果):

local.transformed = [
"preprod-blue",
"preprod-green",
"qat-blue",
"qat-green"
]

实现方案

可以使用Terraform的嵌套for表达式结合扁平化操作来实现:

locals {
  transformed = flatten([
    for env in var.environments : [
      for stage in env.stages : "${env.name}-${stage}"
    ]
  ])
}

代码解释

  • 外层for循环遍历environments列表中的每个环境对象
  • 内层for循环遍历当前环境的stages列表,将环境名与阶段名通过-拼接
  • 使用flatten()函数将嵌套的二维列表转换为一维扁平化列表,得到最终结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:10:30