Arrays 地形:将地图列表转换为修订后的地图列表

Arrays 地形:将地图列表转换为修订后的地图列表,arrays,list,dictionary,object,terraform,Arrays,List,Dictionary,Object,Terraform,我的意见是: input = [ { x = "X1" y = "Y1" }, { x = "X2" y = "Y2" }, { x = "X3" y = "Y3" }, ] 我期望的输出是: output = [ { val = "X1", des

我的意见是:

input = [
  {
    x = "X1"
    y = "Y1"
  },
  {
    x = "X2"
    y = "Y2"
  },
  {
    x = "X3"
    y = "Y3"
  },
]
我期望的输出是:

output = [
  {
    val         = "X1",
    description = "This is a value of X"
  },
  {
    val         = "Y1",
    description = "This is a value of Y"
  },
  {
    val         = "X2",
    description = "This is a value of X"
  },
  {
    val         = "Y2",
    description = "This is a value of Y"
  },
  {
    val         = "X3",
    description = "This is a value of X"
  },
  {
    val         = "Y3",
    description = "This is a value of Y"
  },
]

如何在地形中实现这一点?

以下内容产生了这样的输出:



variable "input" {

  default = [
    {
      x = "X1"
      y = "Y1"
    },
    {
      x = "X2"
      y = "Y2"
    },
    {
      x = "X3"
      y = "Y3"
    },
  ]

}



locals  {
  part1 = [for v in var.input:
      {
        "val" = v.x,
        "description" = "This is a value of X"
      }]
      
  part2 = [for v in var.input:
      {
        "val" = v.y,
        "description" = "This is a value of Y"
      }]      
}



output "output" {

  value = concat(local.part1, local.part2)

}
我的测试的输出:

utput = [
  {
    "description" = "This is a value of X"
    "val" = "X1"
  },
  {
    "description" = "This is a value of X"
    "val" = "X2"
  },
  {
    "description" = "This is a value of X"
    "val" = "X3"
  },
  {
    "description" = "This is a value of Y"
    "val" = "Y1"
  },
  {
    "description" = "This is a value of Y"
    "val" = "Y2"
  },
  {
    "description" = "This is a value of Y"
    "val" = "Y3"
  },
]


我能够在terraform中使用
flant()
函数来实现以下功能:

flatten([
  for a_map in var.input : [
    { val = a_map.x, description = "This is a value of X" },
    { val = a_map.y, description = "This is a value of Y" },
  ]
])
这种方法的一个优点是它将保持价值的顺序

因此,输出将是:

[
  {
    "description" = "This is a value of X"
    "val" = "X1"
  },
  {
    "description" = "This is a value of Y"
    "val" = "Y1"
  },
  {
    "description" = "This is a value of X"
    "val" = "X2"
  },
  {
    "description" = "This is a value of Y"
    "val" = "Y2"
  },
  {
    "description" = "This is a value of X"
    "val" = "X3"
  },
  {
    "description" = "This is a value of Y"
    "val" = "Y3"
  },
]

这将正确生成映射项。但是它不能保持数组项的相同顺序。@没问题。问题并没有说订购有任何问题。但无论如何,谢谢你让我知道。我看到您找到了一个答案:-)问题提到数组是所需的输出。在数组中,索引是它的一部分:)@Rakib足够公平。这是一种很好的方法。