Compartir vía


Funciones de matriz para plantillas de Resource Manager

En este artículo se describen las funciones de la plantilla para trabajar con matrices.

Para obtener una matriz de valores de cadena delimitada por un valor, consulte split.

Sugerencia

Se recomienda Bicep porque ofrece las mismas funcionalidades que las plantillas de ARM y la sintaxis es más fácil de usar. Para más información, consulte las funciones de matriz.

array

array(convertToArray)

Convierte el valor en una matriz.

En Bicep, use la función array.

Parámetros

Parámetro Obligatorio Type Descripción
convertToArray int, string, array u object Valor que se convierte en matriz.

Valor devuelto

Matriz .

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar la función de matriz con diferentes tipos.

{
  "$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'))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

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

concat

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

Combina varias matrices y devuelve la matriz concatenada, o combina varios valores de cadena y devuelve la cadena concatenada.

En Bicep, use la función concat.

Parámetros

Parámetro Obligatorio Type Descripción
arg1 matriz o cadena La primera matriz o cadena para la concatenación.
más argumentos No matriz o cadena Más matrices o cadenas en orden secuencial para la concatenación.

Esta función puede tomar cualquier número de argumentos y puede aceptar cadenas o matrices para los parámetros. Sin embargo, no puede proporcionar ambas a la vez para los parámetros. Las matrices solo se concatenan con otras matrices.

Valor devuelto

Una cadena o matriz de valores concatenados.

Ejemplo

En el ejemplo siguiente se muestra cómo combinar dos matrices.

{
  "$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'))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
return Array ["1-1", "1-2", "1-3", "2-1", "2-2", "2-3"]

En el ejemplo siguiente se muestra cómo combinar dos valores de cadena y devolver una cadena 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))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
concatOutput String prefix-5yj4yjf5mbg72

contains

contains(container, itemToFind)

Comprueba si una matriz contiene un valor, un objeto contiene una clave o una cadena contiene una subcadena. La comparación de cadena distingue mayúsculas de minúsculas. Pero, cuando se prueba si un objeto contiene una clave, la comparación no distingue mayúsculas de minúsculas.

En Bicep, use la función contains.

Parámetros

Parámetro Obligatorio Type Descripción
contenedor matriz, objeto o cadena El valor que contiene el valor para buscar.
itemToFind cadena o entero El valor para buscar.

Valor devuelto

True si el elemento se encuentra; en caso contrario, False.

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar contains con diferentes tipos:

{
  "$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')]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
stringTrue Bool True
stringFalse Bool False
objectTrue Bool True
objectFalse Bool False
arrayTrue Bool True
arrayFalse Bool False

createArray

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

Crea una matriz a partir de los parámetros.

En Bicep, la función createArray no se admite. Para construir una matriz, consulte el tipo de datos de la matriz de Bicep.

Parámetros

Parámetro Obligatorio Type Descripción
args No Cadena, entero, matriz u objeto Valores de la matriz.

Valor devuelto

Matriz . Cuando no se proporciona ningún parámetro, devuelve una matriz vacía.

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar createArray con diferentes tipos:

{
  "$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()]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
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 []

empty

empty(itemToTest)

Determina si una matriz, un objeto o una cadena están vacíos.

En Bicep, use la función empty.

Parámetros

Parámetro Obligatorio Type Descripción
itemToTest matriz, objeto o cadena El valor para comprobar si está vacío.

Valor devuelto

Devuelve True si el valor está vacío; en caso contrario, False.

Ejemplo

En el ejemplo siguiente se comprueba si una matriz, un objeto y una cadena están vacíos.

{
  "$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'))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
arrayEmpty Bool True
objectEmpty Bool True
stringEmpty Bool True

first

first(arg1)

Devuelve el primer elemento de la matriz o el primer carácter de la cadena.

En Bicep, use la función first.

Parámetros

Parámetro Obligatorio Type Descripción
arg1 matriz o cadena El valor para recuperar el primer elemento o carácter.

Valor devuelto

El tipo (cadena, entero, matriz u objeto) del primer elemento en una matriz o el primer carácter de una cadena.

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar la primera función con una matriz y una cadena.

{
  "$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')]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
arrayOutput String one
stringOutput String O

indexOf

indexOf(arrayToSearch, itemToFind)

Devuelve un entero para el índice de la primera aparición de un elemento en una matriz. La comparación distingue mayúsculas de minúsculas para las cadenas.

Parámetros

Parámetro Obligatorio Type Descripción
arrayToSearch array Matriz que se va a usar para buscar el índice del elemento buscado.
itemToFind int, string, array u object Elemento que se va a buscar en la matriz.

Valor devuelto

Entero que representa el primer índice del elemento en la matriz. El índice es de base cero. Si no se encuentra el elemento, se devuelve -1.

Ejemplos

En el ejemplo siguiente se muestra cómo utilizar las funciones indexOf y 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)]"
    }
  }
}

El resultado del ejemplo anterior es:

Nombre 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

intersección

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

Devuelve una única matriz u objeto con los elementos comunes de los parámetros.

En Bicep, use la función intersection.

Parámetros

Parámetro Obligatorio Type Descripción
arg1 matriz u objeto El primer valor que se utilizará para buscar elementos comunes.
arg2 matriz u objeto El segundo valor que se utilizará para buscar elementos comunes.
más argumentos No matriz u objeto Más valores que se utilizarán para buscar elementos comunes.

Valor devuelto

Una matriz o un objeto con los elementos comunes.

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar la intersección con matrices y 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'))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
objectOutput Object {"one": "a", "three": "c"}
arrayOutput Array ["two", "three"]

last

last(arg1)

Devuelve el último elemento de la matriz o el último carácter de la cadena.

En Bicep, use la función last.

Parámetros

Parámetro Obligatorio Type Descripción
arg1 matriz o cadena El valor para recuperar el último elemento o carácter.

Valor devuelto

El tipo (cadena, entero, matriz u objeto) del último elemento de una matriz o el último carácter de una cadena.

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar la última función con una matriz y una cadena.

{
  "$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')]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
arrayOutput String three
stringOutput String e

lastIndexOf

lastIndexOf(arrayToSearch, itemToFind)

Devuelve un entero para el índice de la última aparición de un elemento en una matriz. La comparación distingue mayúsculas de minúsculas para las cadenas.

Parámetros

Parámetro Obligatorio Type Descripción
arrayToSearch array Matriz que se va a usar para buscar el índice del elemento buscado.
itemToFind int, string, array u object Elemento que se va a buscar en la matriz.

Valor devuelto

Entero que representa el último índice del elemento en la matriz. El índice es de base cero. Si no se encuentra el elemento, se devuelve -1.

Ejemplos

En el ejemplo siguiente se muestra cómo utilizar las funciones indexOf y 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)]"
    }
  }
}

El resultado del ejemplo anterior es:

Nombre 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

length

length(arg1)

Devuelve el número de elementos de una matriz, caracteres de una cadena o propiedades de nivel raíz de un objeto.

En Bicep, use la función length.

Parámetros

Parámetro Obligatorio Type Descripción
arg1 matriz, cadena u objeto La matriz que se usará para obtener el número de elementos, la cadena que se usará para obtener el número de caracteres o el objeto que se usará para obtener el número de propiedades del nivel raíz.

Valor devuelto

Un entero.

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar "length" con una matriz y una cadena.

{
  "$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'))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
arrayLength Int 3
stringLength Int 13
objectLength Int 4

Puede usar esta función con una matriz para especificar el número de iteraciones al crear recursos. En el ejemplo siguiente, el parámetro siteNames debería hacer referencia a una matriz de nombres que se usará al crear los sitios web.

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

Para más información sobre el uso de esta función con una matriz, consulte Iteración de recursos en las plantillas de Resource Manager.

max

max(arg1)

Devuelve el valor máximo de una matriz de enteros o una lista separada por comas de enteros.

En Bicep, use la función max.

Parámetros

Parámetro Obligatorio Type Descripción
arg1 matriz de enteros, o lista separada por comas de enteros La colección para obtener el valor máximo.

Valor devuelto

Un entero que representa el valor máximo.

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar "max" con una matriz y una lista de enteros.

{
  "$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)]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
arrayOutput Int 5
intOutput Int 5

Min

min(arg1)

Devuelve el valor mínimo de una matriz de enteros o una lista separada por comas de enteros.

En Bicep, use la función min.

Parámetros

Parámetro Obligatorio Type Descripción
arg1 matriz de enteros, o lista separada por comas de enteros La colección para obtener el valor mínimo.

Valor devuelto

Un entero que representa el valor mínimo.

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar "min" con una matriz y una lista de enteros.

{
  "$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)]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
arrayOutput Int 0
intOutput Int 0

range

range(startIndex, count)

Crea una matriz de enteros a partir de un entero de inicio y contiene un número de elementos.

En Bicep, use la función range.

Parámetros

Parámetro Obligatorio Type Descripción
startIndex int El primer entero de la matriz. La suma de startIndex y count no debe ser mayor que 2 147 483 647.
count int El número de enteros en la matriz. Debe ser un entero no negativo de hasta 10 000.

Valor devuelto

Una matriz de enteros.

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar la función "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'))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
rangeOutput Array [5, 6, 7]

skip

skip(originalValue, numberToSkip)

Devuelve una matriz con todos los elementos después del número especificado de la matriz, o devuelve una cadena con todos los caracteres después del número especificado en la cadena.

En Bicep, use la función skip.

Parámetros

Parámetro Obligatorio Type Descripción
originalValue matriz o cadena La matriz o cadena que se usará para la omisión.
numberToSkip int El número de elementos o caracteres que se van a omitir. Si este valor es 0 o un valor inferior, se devuelven todos los elementos o caracteres del valor. Si es mayor que la longitud de la matriz o la cadena, se devuelve una matriz o cadena vacía.

Valor devuelto

Una matriz o cadena.

Ejemplo

En el ejemplo siguiente se omite el número especificado de elementos de la matriz, y el número especificado de caracteres de la cadena.

{
  "$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'))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
arrayOutput Array ["three"]
stringOutput String two three

take

take(originalValue, numberToTake)

Devuelve una matriz o una cadena. Una matriz tiene el número especificado de elementos desde el principio de la matriz. Una cadena tiene el número especificado de caracteres desde el principio de la cadena.

En Bicep, use la función take.

Parámetros

Parámetro Obligatorio Type Descripción
originalValue matriz o cadena La matriz o cadena de la que se van a tomar los elementos.
numberToTake int El número de elementos o caracteres que se van a tomar. Si este valor es 0 o un valor inferior, se devolverá una matriz o cadena vacía. Si es mayor que la longitud de la matriz o cadena especificada, se devuelven todos los elementos de la matriz o cadena.

Valor devuelto

Una matriz o cadena.

Ejemplo

En el ejemplo siguiente se toma el número especificado de elementos de la matriz y de caracteres de la cadena.

{
  "$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'))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
arrayOutput Array ["one", "two"]
stringOutput String en

union

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

Devuelve una única matriz u objeto con todos los elementos de los parámetros. Para las matrices, los valores duplicados se incluyen una vez. Para los objetos, los nombres de propiedad duplicados solo se incluyen una vez.

En Bicep, use la función union.

Parámetros

Parámetro Obligatorio Type Descripción
arg1 matriz u objeto El primer valor que se utiliza para unir elementos.
arg2 matriz u objeto El segundo valor que se utiliza para unir elementos.
más argumentos No matriz u objeto Más valores que se utilizan para unir elementos.

Valor devuelto

Una matriz u objeto.

Comentarios

La función de unión usa la secuencia de los parámetros para determinar el orden y los valores del resultado.

Para las matrices, la función se itera por cada elemento del primer parámetro y lo agrega al resultado si no está presente. A continuación, repite el proceso para el segundo parámetro y los parámetros adicionales. Si un valor ya existe, se conserva su ubicación anterior en la matriz.

En el caso de los objetos, los nombres de propiedad y los valores del primer parámetro se agregan al resultado. Para los parámetros posteriores, se agregarán los nuevos nombres al resultado. Si un parámetro posterior tiene una propiedad con el mismo nombre, ese valor sobrescribe el valor existente. El orden de las propiedades no está garantizado.

La función union no solo combina los elementos de nivel superior, sino que también combina de forma recursiva los objetos anidados dentro de ellos. Los valores de matriz anidados no se combinan. Consulte el segundo ejemplo de la sección siguiente.

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar "union" con matrices y 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'))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
objectOutput Object {"one": "a", "two": "b", "three": "c2", "four": "d", "five": "e"}
arrayOutput Array ["one", "two", "three", "four"]

En el ejemplo siguiente se muestra la capacidad de combinación 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'))]"
    }
  }
}

El resultado del ejemplo anterior es:

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

Si se combinaron matrices anidadas, el valor de objectOutput.nestedArray sería [1, 2, 3, 4], y el valor de arrayOutput sería [["one", "two", "three"], ["three", "four", "two"]].

Pasos siguientes