Funções de matriz para modelos do ARM

Este artigo descreve as funções modelo para trabalhar com matrizes.

Para obter uma matriz de valores de cadeia de caracteres delimitada por um valor, confira split.

Dica

Recomendamos o Bicep porque ele oferece as mesmas funcionalidades que os modelos do ARM e a sintaxe é mais fácil de usar. Para saber mais, confira funções de matriz.

array

array(convertToArray)

Converte o valor em uma matriz.

No Bicep, use a função array.

Parâmetros

Parâmetro Obrigatório Type Descrição
convertToArray Sim int, string, array ou object O valor a ser convertido em uma matriz.

Retornar valor

Uma matriz .

Exemplo

O seguinte exemplo mostra como usar a função array com tipos diferentes.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "intToConvert": {
      "type": "int",
      "defaultValue": 1
    },
    "stringToConvert": {
      "type": "string",
      "defaultValue": "efgh"
    },
    "objectToConvert": {
      "type": "object",
      "defaultValue": {
        "a": "b",
        "c": "d"
      }
    }
  },
  "resources": [
  ],
  "outputs": {
    "intOutput": {
      "type": "array",
      "value": "[array(parameters('intToConvert'))]"
    },
    "stringOutput": {
      "type": "array",
      "value": "[array(parameters('stringToConvert'))]"
    },
    "objectOutput": {
      "type": "array",
      "value": "[array(parameters('objectToConvert'))]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
intOutput Array [1]
stringOutput Array ["efgh"]
objectOutput Array [{"a": "b", "c": "d"}]

concat

concat(arg1, arg2, arg3, ...)

Combina várias matrizes e retorna a matriz concatenada, ou combina vários valores de cadeia de caracteres e retorna a matriz concatenada.

No Bicep, use a função concat.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim matriz ou cadeia de caracteres A primeira matriz ou cadeia de caracteres para concatenação.
mais argumentos Não matriz ou cadeia de caracteres Mais de caractere adicionais em ordem sequencial para concatenação.

Essa função pode conter qualquer número de argumentos e pode aceitar cadeias de caracteres ou matrizes como parâmetros. No entanto, você não pode apresentar cadeias de caracteres e matrizes para parâmetros. Só é possível concatenar matrizes com outras matrizes.

Retornar valor

Uma cadeia de caracteres ou matriz de valores concatenados.

Exemplo

O próximo exemplo mostra como combinar duas matrizes.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstArray": {
      "type": "array",
      "defaultValue": [
        "1-1",
        "1-2",
        "1-3"
      ]
    },
    "secondArray": {
      "type": "array",
      "defaultValue": [
        "2-1",
        "2-2",
        "2-3"
      ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "return": {
      "type": "array",
      "value": "[concat(parameters('firstArray'), parameters('secondArray'))]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
return Array ["1-1", "1-2", "1-3", "2-1", "2-2", "2-3"]

O exemplo a seguir mostra como combinar dois valores de cadeia de caracteres e retornar uma cadeia de caracteres concatenada.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "prefix": {
      "type": "string",
      "defaultValue": "prefix"
    }
  },
  "resources": [],
  "outputs": {
    "concatOutput": {
      "type": "string",
      "value": "[concat(parameters('prefix'), '-', uniqueString(resourceGroup().id))]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
concatOutput String prefix-5yj4yjf5mbg72

contém

contains(container, itemToFind)

Verifica se uma matriz contém um valor, um objeto contém uma chave ou uma cadeia de caracteres contém uma subcadeia de caracteres. A comparação de cadeia de caracteres diferencia maiúsculas de minúsculas. No entanto, ao testar se um objeto contém uma chave, a comparação não diferencia maiúsculas de minúsculas.

No Bicep, use a função contains.

Parâmetros

Parâmetro Obrigatório Type Descrição
contêiner Sim matriz, objeto ou cadeia de caracteres O valor que contém o valor a ser encontrado.
itemToFind Sim cadeia de caracteres ou inteiro O valor a ser encontrado.

Retornar valor

True se o item for encontrado; caso contrário, False.

Exemplo

O seguinte exemplo mostra como usar contains com tipos diferentes:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "stringToTest": {
      "type": "string",
      "defaultValue": "OneTwoThree"
    },
    "objectToTest": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b",
        "three": "c"
      }
    },
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "stringTrue": {
      "type": "bool",
      "value": "[contains(parameters('stringToTest'), 'e')]"
    },
    "stringFalse": {
      "type": "bool",
      "value": "[contains(parameters('stringToTest'), 'z')]"
    },
    "objectTrue": {
      "type": "bool",
      "value": "[contains(parameters('objectToTest'), 'one')]"
    },
    "objectFalse": {
      "type": "bool",
      "value": "[contains(parameters('objectToTest'), 'a')]"
    },
    "arrayTrue": {
      "type": "bool",
      "value": "[contains(parameters('arrayToTest'), 'three')]"
    },
    "arrayFalse": {
      "type": "bool",
      "value": "[contains(parameters('arrayToTest'), 'four')]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
stringTrue Bool True
stringFalse Bool Falso
objectTrue Bool True
objectFalse Bool Falso
arrayTrue Bool True
arrayFalse Bool Falso

createArray

createArray(arg1, arg2, arg3, ...)

Cria uma matriz de parâmetros.

Não há suporte para a função createArray no Bicep. Para construir uma matriz, consulte o tipo de dados array no Bicep.

Parâmetros

Parâmetro Obrigatório Type Descrição
args Não String, Inteiro, Matriz ou Objeto Os valores na matriz.

Retornar valor

Uma matriz . Quando nenhum parâmetro é fornecido, ele retorna uma matriz vazia.

Exemplo

O seguinte exemplo mostra como usar createArray com tipos diferentes:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "objectToTest": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b",
        "three": "c"
      }
    },
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "stringArray": {
      "type": "array",
      "value": "[createArray('a', 'b', 'c')]"
    },
    "intArray": {
      "type": "array",
      "value": "[createArray(1, 2, 3)]"
    },
    "objectArray": {
      "type": "array",
      "value": "[createArray(parameters('objectToTest'))]"
    },
    "arrayArray": {
      "type": "array",
      "value": "[createArray(parameters('arrayToTest'))]"
    },
    "emptyArray": {
      "type": "array",
      "value": "[createArray()]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
stringArray Array ["a", "b", "c"]
intArray Array [1, 2, 3]
objectArray Array [{"one": "a", "two": "b", "three": "c"}]
arrayArray Array [["one", "two", "three"]]
emptyArray Array []

vazio

empty(itemToTest)

Determina se uma matriz, objeto ou uma cadeia de caracteres está vazio.

No Bicep, use a função empty.

Parâmetros

Parâmetro Obrigatório Type Descrição
itemToTest Sim matriz, objeto ou cadeia de caracteres O valor a ser verificado, caso esteja vazio.

Retornar valor

Retorna True se o valor é vazio; caso contrário, False.

Exemplo

O exemplo a seguir verifica se uma matriz, um objeto e uma cadeia de caracteres estão vazios.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "testArray": {
      "type": "array",
      "defaultValue": []
    },
    "testObject": {
      "type": "object",
      "defaultValue": {}
    },
    "testString": {
      "type": "string",
      "defaultValue": ""
    }
  },
  "resources": [
  ],
  "outputs": {
    "arrayEmpty": {
      "type": "bool",
      "value": "[empty(parameters('testArray'))]"
    },
    "objectEmpty": {
      "type": "bool",
      "value": "[empty(parameters('testObject'))]"
    },
    "stringEmpty": {
      "type": "bool",
      "value": "[empty(parameters('testString'))]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
arrayEmpty Bool True
objectEmpty Bool True
stringEmpty Bool True

first

first(arg1)

Retorna o primeiro elemento da matriz ou o primeiro caractere da cadeia de caracteres.

No Bicep, use a função first.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim matriz ou cadeia de caracteres O valor para recuperar o primeiro elemento ou caractere.

Retornar valor

O tipo (cadeia de caracteres, inteiro, matriz ou objeto) do primeiro elemento em uma matriz ou o primeiro caractere de uma cadeia de caracteres.

Exemplo

O exemplo a seguir mostra como usar a primeira função com uma matriz e cadeia de caracteres.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "arrayOutput": {
      "type": "string",
      "value": "[first(parameters('arrayToTest'))]"
    },
    "stringOutput": {
      "type": "string",
      "value": "[first('One Two Three')]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
arrayOutput String one
stringOutput String O

indexOf

indexOf(arrayToSearch, itemToFind)

Retorna um inteiro para o índice da primeira ocorrência de um item em uma matriz. A comparação diferencia maiúsculas de minúsculas nas cadeias de caracteres.

Parâmetros

Parâmetro Obrigatório Type Descrição
arrayToSearch Sim matriz A matriz a ser usada para localizar o índice do item pesquisado.
itemToFind Sim int, string, array ou object O item a ser encontrado na matriz.

Valor retornado

Um inteiro que representa o primeiro índice do item na matriz. O índice começa no zero. Se o item não for encontrado, -1 será retornado.

Exemplos

O seguinte exemplo mostra como usar as funções indexOf e lastIndexOf:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "names": [
      "one",
      "two",
      "three"
    ],
    "numbers": [
      4,
      5,
      6
    ],
    "collection": [
      "[variables('names')]",
      "[variables('numbers')]"
    ],
    "duplicates": [
      1,
      2,
      3,
      1
    ]
  },
  "resources": [],
  "outputs": {
    "index1": {
      "type": "int",
      "value": "[lastIndexOf(variables('names'), 'two')]"
    },
    "index2": {
      "type": "int",
      "value": "[indexOf(variables('names'), 'one')]"
    },
    "notFoundIndex1": {
      "type": "int",
      "value": "[lastIndexOf(variables('names'), 'Three')]"
    },
    "index3": {
      "type": "int",
      "value": "[lastIndexOf(variables('numbers'), 4)]"
    },
    "index4": {
      "type": "int",
      "value": "[indexOf(variables('numbers'), 6)]"
    },
    "notFoundIndex2": {
      "type": "int",
      "value": "[lastIndexOf(variables('numbers'), '5')]"
    },
    "index5": {
      "type": "int",
      "value": "[indexOf(variables('collection'), variables('numbers'))]"
    },
    "index6": {
      "type": "int",
      "value": "[indexOf(variables('duplicates'), 1)]"
    },
    "index7": {
      "type": "int",
      "value": "[lastIndexOf(variables('duplicates'), 1)]"
    }
  }
}

O resultado do exemplo anterior é:

Nome Tipo Valor
index1 INT 1
index2 INT 0
index3 INT 0
index4 INT 2
index5 INT 1
index6 INT 0
index7 INT 3
notFoundIndex1 INT -1
notFoundIndex2 INT -1

interseção

intersection(arg1, arg2, arg3, ...)

Retorna uma única matriz ou objeto com os elementos comuns dos parâmetros.

No Bicep, use a função intersection.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim objeto ou matriz O primeiro valor a ser usado para localizar elementos comuns.
arg2 Sim objeto ou matriz O segundo valor a ser usado para localizar elementos comuns.
mais argumentos Não objeto ou matriz Mais valores a serem usados para localizar elementos comuns.

Retornar valor

Uma matriz ou objeto com os elementos comuns.

Exemplo

O exemplo a seguir mostra como usar a interseção com matrizes e objetos.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstObject": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b",
        "three": "c"
      }
    },
    "secondObject": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "z",
        "three": "c"
      }
    },
    "firstArray": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    },
    "secondArray": {
      "type": "array",
      "defaultValue": [ "two", "three" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "objectOutput": {
      "type": "object",
      "value": "[intersection(parameters('firstObject'), parameters('secondObject'))]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[intersection(parameters('firstArray'), parameters('secondArray'))]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
objectOutput Objeto {"one": "a", "three": "c"}
arrayOutput Array ["two", "three"]

last

last(arg1)

Retorna o último elemento da matriz ou o último caractere da cadeia de caracteres.

No Bicep, use a função last.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim matriz ou cadeia de caracteres O valor para recuperar o último elemento ou caractere.

Retornar valor

O tipo (cadeia de caracteres, inteiro, matriz ou objeto) do último elemento em uma matriz ou o último caractere de uma cadeia de caracteres.

Exemplo

O exemplo a seguir mostra como usar a última função com uma matriz e cadeia de caracteres.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "arrayOutput": {
      "type": "string",
      "value": "[last(parameters('arrayToTest'))]"
    },
    "stringOutput": {
      "type": "string",
      "value": "[last('One Two Three')]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
arrayOutput String três
stringOutput String e

lastIndexOf

lastIndexOf(arrayToSearch, itemToFind)

Retorna um inteiro para o índice da última ocorrência de um item em uma matriz. A comparação diferencia maiúsculas de minúsculas nas cadeias de caracteres.

Parâmetros

Parâmetro Obrigatório Type Descrição
arrayToSearch Sim matriz A matriz a ser usada para localizar o índice do item pesquisado.
itemToFind Sim int, string, array ou object O item a ser encontrado na matriz.

Valor retornado

Um inteiro que representa o último índice do item na matriz. O índice começa no zero. Se o item não for encontrado, -1 será retornado.

Exemplos

O seguinte exemplo mostra como usar as funções indexOf e lastIndexOf:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "names": [
      "one",
      "two",
      "three"
    ],
    "numbers": [
      4,
      5,
      6
    ],
    "collection": [
      "[variables('names')]",
      "[variables('numbers')]"
    ],
    "duplicates": [
      1,
      2,
      3,
      1
    ]
  },
  "resources": [],
  "outputs": {
    "index1": {
      "type": "int",
      "value": "[lastIndexOf(variables('names'), 'two')]"
    },
    "index2": {
      "type": "int",
      "value": "[indexOf(variables('names'), 'one')]"
    },
    "notFoundIndex1": {
      "type": "int",
      "value": "[lastIndexOf(variables('names'), 'Three')]"
    },
    "index3": {
      "type": "int",
      "value": "[lastIndexOf(variables('numbers'), 4)]"
    },
    "index4": {
      "type": "int",
      "value": "[indexOf(variables('numbers'), 6)]"
    },
    "notFoundIndex2": {
      "type": "int",
      "value": "[lastIndexOf(variables('numbers'), '5')]"
    },
    "index5": {
      "type": "int",
      "value": "[indexOf(variables('collection'), variables('numbers'))]"
    },
    "index6": {
      "type": "int",
      "value": "[indexOf(variables('duplicates'), 1)]"
    },
    "index7": {
      "type": "int",
      "value": "[lastIndexOf(variables('duplicates'), 1)]"
    }
  }
}

O resultado do exemplo anterior é:

Nome Tipo Valor
index1 INT 1
index2 INT 0
index3 INT 0
index4 INT 2
index5 INT 1
index6 INT 0
index7 INT 3
notFoundIndex1 INT -1
notFoundIndex2 INT -1

comprimento

length(arg1)

Retorna o número de elementos de uma matriz, caracteres de uma cadeia de caracteres ou propriedades em nível raiz de um objeto.

No Bicep, use a função length.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim matriz, cadeia de caracteres ou objeto A matriz usada para obter o número de elementos, a cadeia de caracteres usada para obter o número de caracteres ou o objeto usado para obter o número de propriedades em nível raiz.

Retornar valor

Um inteiro.

Exemplo

O seguinte exemplo mostra como usar length com uma matriz e cadeia de caracteres.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "arrayToTest": {
      "type": "array",
      "defaultValue": [
        "one",
        "two",
        "three"
      ]
    },
    "stringToTest": {
      "type": "string",
      "defaultValue": "One Two Three"
    },
    "objectToTest": {
      "type": "object",
      "defaultValue": {
        "propA": "one",
        "propB": "two",
        "propC": "three",
        "propD": {
          "propD-1": "sub",
          "propD-2": "sub"
        }
      }
    }
  },
  "resources": [],
  "outputs": {
    "arrayLength": {
      "type": "int",
      "value": "[length(parameters('arrayToTest'))]"
    },
    "stringLength": {
      "type": "int",
      "value": "[length(parameters('stringToTest'))]"
    },
    "objectLength": {
      "type": "int",
      "value": "[length(parameters('objectToTest'))]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
arrayLength int 3
stringLength int 13
objectLength int 4

Essa função pode ser usada com uma matriz para especificar o número de iterações durante a criação de recursos. No exemplo a seguir, o parâmetro siteNames faz referência a uma matriz de nomes a serem usados durante a criação de sites da web.

"copy": {
  "name": "websitescopy",
  "count": "[length(parameters('siteNames'))]"
}

Para obter mais informações sobre como usar essa função com uma matriz, veja Iteração de recurso em modelos do ARM.

max

max(arg1)

Retorna o valor máximo de uma matriz de inteiros ou uma lista de inteiros separados por vírgulas.

No bicep, use a função max.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim matriz de inteiros ou lista de inteiros separados por vírgulas A coleção para obtenção do valor máximo.

Retornar valor

Um inteiro que representa o valor máximo.

Exemplo

O seguinte exemplo mostra como usar max com uma matriz e uma lista de inteiros.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ 0, 3, 2, 5, 4 ]
    }
  },
  "resources": [],
  "outputs": {
    "arrayOutput": {
      "type": "int",
      "value": "[max(parameters('arrayToTest'))]"
    },
    "intOutput": {
      "type": "int",
      "value": "[max(0,3,2,5,4)]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
arrayOutput int 5
intOutput int 5

min

min(arg1)

Retorna o valor mínimo de uma matriz de inteiros ou uma lista de inteiros separados por vírgulas.

No bicep, use a função min.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim matriz de inteiros ou lista de inteiros separados por vírgulas A coleção para obtenção do valor mínimo.

Retornar valor

Um inteiro que representa o valor mínimo.

Exemplo

O seguinte exemplo mostra como usar min com uma matriz e uma lista de inteiros.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ 0, 3, 2, 5, 4 ]
    }
  },
  "resources": [],
  "outputs": {
    "arrayOutput": {
      "type": "int",
      "value": "[min(parameters('arrayToTest'))]"
    },
    "intOutput": {
      "type": "int",
      "value": "[min(0,3,2,5,4)]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
arrayOutput int 0
intOutput int 0

range

range(startIndex, count)

Cria uma matriz de inteiros a partir de um inteiro inicial e contendo um número de itens.

No bicep, use a função range.

Parâmetros

Parâmetro Obrigatório Type Descrição
startIndex Sim INT O primeiro inteiro na matriz. A soma de startIndex e Count não deve ser maior que 2147483647.
count Sim INT O número de inteiros na matriz. Deve ser um inteiro não negativo de até 10000.

Retornar valor

Uma matriz de inteiros.

Exemplo

O exemplo a seguir mostra como usar a função range.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "startingInt": {
      "type": "int",
      "defaultValue": 5
    },
    "numberOfElements": {
      "type": "int",
      "defaultValue": 3
    }
  },
  "resources": [],
  "outputs": {
    "rangeOutput": {
      "type": "array",
      "value": "[range(parameters('startingInt'),parameters('numberOfElements'))]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
rangeOutput Array [5, 6, 7]

skip

skip(originalValue, numberToSkip)

Retorna uma matriz com todos os elementos após o número especificado na matriz, ou retorna uma cadeia de caracteres com todos os caracteres após o número especificado na cadeia de caracteres.

No Bicep, use a função skip.

Parâmetros

Parâmetro Obrigatório Type Descrição
originalValue Sim matriz ou cadeia de caracteres A matriz ou cadeia de caracteres a ser usada para ignorar.
numberToSkip Sim INT O número de elementos ou caracteres a ser ignorado. Se esse valor for 0 ou menos, todos os elementos ou caracteres no valor serão retornados. Se ele for maior que o tamanho da matriz ou da cadeia de caracteres, uma matriz ou uma cadeia de caracteres vazia será retornada.

Retornar valor

Uma matriz ou cadeia de caracteres.

Exemplo

O exemplo a seguir ignora o número especificado de elementos na matriz e o número especificado de caracteres em uma cadeia de caracteres.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "testArray": {
      "type": "array",
      "defaultValue": [
        "one",
        "two",
        "three"
      ]
    },
    "elementsToSkip": {
      "type": "int",
      "defaultValue": 2
    },
    "testString": {
      "type": "string",
      "defaultValue": "one two three"
    },
    "charactersToSkip": {
      "type": "int",
      "defaultValue": 4
    }
  },
  "resources": [],
  "outputs": {
    "arrayOutput": {
      "type": "array",
      "value": "[skip(parameters('testArray'),parameters('elementsToSkip'))]"
    },
    "stringOutput": {
      "type": "string",
      "value": "[skip(parameters('testString'),parameters('charactersToSkip'))]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
arrayOutput Array ["three"]
stringOutput String two three

take

take(originalValue, numberToTake)

Retorna uma matriz de cadeias de caracteres. Uma matriz com o número especificado de elementos desde o início da matriz. Uma cadeia de caracteres com o número especificado de caracteres no início da cadeia.

No Bicep, use a função take.

Parâmetros

Parâmetro Obrigatório Type Descrição
originalValue Sim matriz ou cadeia de caracteres A matriz ou cadeia de caracteres da qual extrair os elementos.
numberToTake Sim INT O número de elementos ou caracteres a ser extraído. Se esse valor for 0 ou menos, uma matriz ou cadeia de caracteres vazia será retornada. Se ele for maior que o tamanho da matriz ou da cadeia de caracteres especificada, todos os elementos da matriz ou da cadeia de caracteres serão retornados.

Retornar valor

Uma matriz ou cadeia de caracteres.

Exemplo

O exemplo a seguir extrai o número especificado de elementos da matriz e de caracteres de uma cadeia de caracteres.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "testArray": {
      "type": "array",
      "defaultValue": [
        "one",
        "two",
        "three"
      ]
    },
    "elementsToTake": {
      "type": "int",
      "defaultValue": 2
    },
    "testString": {
      "type": "string",
      "defaultValue": "one two three"
    },
    "charactersToTake": {
      "type": "int",
      "defaultValue": 2
    }
  },
  "resources": [],
  "outputs": {
    "arrayOutput": {
      "type": "array",
      "value": "[take(parameters('testArray'),parameters('elementsToTake'))]"
    },
    "stringOutput": {
      "type": "string",
      "value": "[take(parameters('testString'),parameters('charactersToTake'))]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
arrayOutput Array ["one", "two"]
stringOutput String on

union

union(arg1, arg2, arg3, ...)

Retorna uma única matriz ou objeto com todos os elementos dos parâmetros. Para matrizes, os valores duplicados são incluídos uma vez. Para objetos, os nomes de propriedades duplicados são incluídos apenas uma vez.

No Bicep, use a função union.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim objeto ou matriz O primeiro valor a ser usado para unir elementos.
arg2 Sim objeto ou matriz O segundo valor a ser usado para unir elementos.
mais argumentos Não objeto ou matriz Mais valores a serem usados para unir elementos.

Retornar valor

Uma matriz ou objeto.

Comentários

A função union usa a sequência dos parâmetros para determinar a ordem e os valores do resultado.

Para matrizes, a função itera através de cada elemento no primeiro parâmetro e o adiciona ao resultado se ainda não estiver presente. Em seguida, ele repete o processo para o segundo parâmetro e quaisquer parâmetros adicionais. Se um valor já estiver presente, o posicionamento anterior na matriz será preservado.

Para objetos, nomes de propriedades e valores do primeiro parâmetro são adicionados ao resultado. Para parâmetros posteriores, todos os novos nomes são adicionados ao resultado. Se um parâmetro posterior tiver uma propriedade com o mesmo nome, esse valor substituirá o valor existente. A ordem das propriedades não é garantida.

A função union mescla não apenas os elementos de nível superior, mas também mescla recursivamente qualquer objeto aninhado dentro deles. Os valores da matriz aninhada não são mesclados. Veja o segundo exemplo na seção a seguir.

Exemplo

O exemplo a seguir mostra como usar a union com matrizes e objetos.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstObject": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b",
        "three": "c1"
      }
    },
    "secondObject": {
      "type": "object",
      "defaultValue": {
        "three": "c2",
        "four": "d",
        "five": "e"
      }
    },
    "firstArray": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    },
    "secondArray": {
      "type": "array",
      "defaultValue": [ "three", "four" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "objectOutput": {
      "type": "object",
      "value": "[union(parameters('firstObject'), parameters('secondObject'))]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[union(parameters('firstArray'), parameters('secondArray'))]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
objectOutput Objeto {"one": "a", "two": "b", "three": "c2", "four": "d", "five": "e"}
arrayOutput Array ["one", "two", "three", "four"]

O seguinte exemplo mostra a funcionalidade de mesclagem profunda:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "firstObject": {
      "property": {
        "one": "a",
        "two": "b",
        "three": "c1"
      },
      "nestedArray": [
        1,
        2
      ]
    },
    "secondObject": {
      "property": {
        "three": "c2",
        "four": "d",
        "five": "e"
      },
      "nestedArray": [
        3,
        4
      ]
    },
    "firstArray": [
      [
        "one",
        "two"
      ],
      [
        "three"
      ]
    ],
    "secondArray": [
      [
        "three"
      ],
      [
        "four",
        "two"
      ]
    ]
  },
  "resources": [],
  "outputs": {
    "objectOutput": {
      "type": "Object",
      "value": "[union(variables('firstObject'), variables('secondObject'))]"
    },
    "arrayOutput": {
      "type": "Array",
      "value": "[union(variables('firstArray'), variables('secondArray'))]"
    }
  }
}

O resultado do exemplo anterior é:

Nome Tipo Valor
objectOutput Objeto {"property":{"one":"a","two":"b","three":"c2","four":"d","five":"e"},"nestedArray":[3,4]}
arrayOutput Array [["one","two"],["three"],["four","two"]]

Se as matrizes aninhadas forem mescladas, o valor de objectOutput.nestedArray seria [1, 2, 3, 4], e o valor de arrayOutput será [["one", "two", "three"], ["three", "four", "two"]].

Próximas etapas