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

如何在Azure Bicep中从区域数组生成唯一区域对?

在Azure Bicep中生成环形区域配对数组

假设你需要将给定的区域数组(如['eastus','westeurope','westus'])转换为环形的唯一区域对数组(每个区域依次与下一个区域配对,最后一个区域与第一个区域配对),可以通过以下Bicep代码实现:

实现代码

// 定义输入的区域数组
param regions array = ['eastus', 'westeurope', 'westus']

// 生成环形区域配对数组
var regionPairs = [for i in range(0, length(regions)): {
  A: regions[i]
  B: regions[(i + 1) % length(regions)]
}]

// 输出结果(可选,用于验证)
output generatedPairs array = regionPairs

代码说明

  • 用range(0, length(regions))遍历区域数组的每个索引;
  • 对每个索引i,取当前区域作为A,通过(i + 1) % length(regions)计算下一个区域的索引(取模运算确保最后一个索引的下一个元素是数组第一个元素);
  • 最终生成的regionPairs数组完全匹配你给出的示例结果:
    [
      {"A": "eastus", "B": "westeurope"},
      {"A": "westeurope", "B": "westus"},
      {"A": "westus", "B": "eastus"}
    ]
    

如果你需要的是所有不重复的有序区域对(每个区域与其他所有区域各配对一次),可以用以下代码:

param regions array = ['eastus', 'westeurope', 'westus']

// 生成所有可能的配对,再过滤掉A和B相同的项
var allUniquePairs = filter(flatten([for a in regions: [for b in regions: {
  A: a
  B: b
}]]), pair => pair.A != pair.B)

output allUniqueOrderedPairs array = allUniquePairs

这段代码会生成6组有效配对,结果为:

[
  {"A": "eastus", "B": "westeurope"},
  {"A": "eastus", "B": "westus"},
  {"A": "westeurope", "B": "eastus"},
  {"A": "westeurope", "B": "westus"},
  {"A": "westus", "B": "eastus"},
  {"A": "westus", "B": "westeurope"}
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 12:59:59