Condividi tramite


Funzioni matrice per Bicep

Questo articolo descrive le funzioni Bicep per operare con le matrici. Le funzioni lambda per l'uso delle matrici sono disponibili qui.

array

array(convertToArray)

Converte il valore in matrice.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
convertToArray int, stringa, matrice o oggetto Valore da convertire in matrice.

Valore restituito

Matrice .

Esempio

L'esempio seguente mostra come usare la funzione matrice con tipi diversi.

param intToConvert int = 1
param stringToConvert string = 'efgh'
param objectToConvert object = {
  a: 'b'
  c: 'd'
}

output intOutput array = array(intToConvert)
output stringOutput array = array(stringToConvert)
output objectOutput array = array(objectToConvert)

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
intOutput Matrice [1]
stringOutput Matrice ["efgh"]
objectOutput Matrice [{"a": "b", "c": "d"}]

concat

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

Combina più matrici e restituisce la matrice concatenata. Per altre informazioni sulla combinazione di più stringhe, vedere concat.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
arg1 array Il primo array per la concatenazione.
altri argomenti No array Altre matrici in ordine sequenziale per la concatenazione.

Questa funzione accetta un numero qualsiasi di matrici e le combina.

Valore restituito

Matrice di valori concatenati.

Esempio

L'esempio seguente illustra come combinare due matrici.

param firstArray array = [
  '1-1'
  '1-2'
  '1-3'
]
param secondArray array = [
  '2-1'
  '2-2'
  '2-3'
]

output return array = concat(firstArray, secondArray)

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
return Matrice ["1-1", "1-2", "1-3", "2-1", "2-2", "2-3"]

contains

contains(container, itemToFind)

Verifica se una matrice contiene un valore, se un oggetto contiene una chiave o se una stringa contiene una sottostringa. Il confronto fra stringhe fa distinzione tra maiuscole e minuscole. Tuttavia, quando si testa se un oggetto contiene una chiave, il confronto non fa distinzione tra maiuscole e minuscole.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
container matrice, oggetto o stringa Valore che contiene il valore da trovare.
itemToFind stringa o numero intero Valore da trovare.

Valore restituito

True se l'elemento viene individuato; in caso contrario, restituisce False.

Esempio

L'esempio seguente mostra come usare la funzione contains con tipi diversi:

param stringToTest string = 'OneTwoThree'
param objectToTest object = {
  one: 'a'
  two: 'b'
  three: 'c'
}
param arrayToTest array = [
  'one'
  'two'
  'three'
]

output stringTrue bool = contains(stringToTest, 'e')
output stringFalse bool = contains(stringToTest, 'z')
output objectTrue bool = contains(objectToTest, 'one')
output objectFalse bool = contains(objectToTest, 'a')
output arrayTrue bool = contains(arrayToTest, 'three')
output arrayFalse bool = contains(arrayToTest, 'four')

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
stringTrue Bool Vero
stringFalse Bool Falso
objectTrue Bool Vero
objectFalse Bool Falso
arrayTrue Bool Vero
arrayFalse Bool Falso

empty

empty(itemToTest)

Determina se una matrice, un oggetto o una stringa è vuota o null.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
itemToTest matrice, oggetto o stringa Valore da controllare se è vuoto o null.

Valore restituito

Restituisce True se il valore è vuoto o null; in caso contrario, False.

Esempio

L'esempio seguente controlla se una matrice, un oggetto e una stringa sono vuoti.

param testArray array = []
param testObject object = {}
param testString string = ''
param testNullString string?

output arrayEmpty bool = empty(testArray)
output objectEmpty bool = empty(testObject)
output stringEmpty bool = empty(testString)
output stringNull bool = empty(testNullString)

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
arrayEmpty Bool Vero
objectEmpty Bool Vero
stringEmpty Bool Vero
stringNull Bool Vero

Esempi di avvio rapido

L'esempio seguente viene estratto da un modello di avvio rapido, Rete virtuale con le impostazioni dei log di diagnostica:

@description('Array containing DNS Servers')
param dnsServers array = []

...

resource vnet 'Microsoft.Network/virtualNetworks@2023-11-01' = {
  name: vnetName
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: vnetAddressSpace
    }
    dhcpOptions: empty(dnsServers) ? null : {
      dnsServers: dnsServers
    }
    ...
  }
}

Nell'espressione condizionale, la funzione vuota viene usata per verificare se la matrice dnsServers è una matrice vuota.

primo

first(arg1)

Restituisce il primo elemento della matrice o il primo carattere della stringa.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
arg1 stringa o matrice Valore per recuperare il primo elemento o carattere.

Valore restituito

Il tipo (string, int, array o object) del primo elemento di una matrice o il primo carattere di una stringa.

Esempio

L'esempio seguente mostra come usare la prima funzione con una matrice e una stringa.

param arrayToTest array = [
  'one'
  'two'
  'three'
]

output arrayOutput string = first(arrayToTest)
output stringOutput string = first('One Two Three')

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
arrayOutput String Uno
stringOutput String O

flatten

flatten(arrayToFlatten)

Accetta una matrice di matrici e restituisce una matrice di elementi della subarray nell'ordine originale. Le sottoarray vengono rese flat una sola volta, non in modo ricorsivo.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
arrayToFlattern array Matrice di sottoarray da rendere flat.

Valore restituito

Matrice

Esempio

L'esempio seguente illustra come usare la funzione Rendere flat.

param arrayToTest array = [
  ['one', 'two']
  ['three']
  ['four', 'five']
]
output arrayOutput array = flatten(arrayToTest)

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
arrayOutput array ['one', 'two', 'three', 'four', 'five']

indexOf

indexOf(arrayToSearch, itemToFind)

Restituisce un numero intero per l'indice della prima occorrenza di un elemento in una matrice. Il confronto è sensibile alle maiuscole per le stringhe.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
arrayToSearch array La matrice da usare per trovare l'indice dell'elemento cercato.
itemToFind int, stringa, matrice o oggetto L’elemento da trovare nella matrice.

Valore restituito

Un intero che rappresenta il primo indice dell'elemento nella matrice. L’indice è in base zero. Se l'elemento non viene trovato, viene restituito -1.

Esempi

L'esempio seguente mostra come usare le funzioni indexOf e lastIndexOf:

var names = [
  'one'
  'two'
  'three'
]

var numbers = [
  4
  5
  6
]

var collection = [
  names
  numbers
]

var duplicates = [
  1
  2
  3
  1
]

output index1 int = lastIndexOf(names, 'two')
output index2 int = indexOf(names, 'one')
output notFoundIndex1 int = lastIndexOf(names, 'Three')

output index3 int = lastIndexOf(numbers, 4)
output index4 int = indexOf(numbers, 6)
output notFoundIndex2 int = lastIndexOf(numbers, '5')

output index5 int = indexOf(collection, numbers)

output index6 int = indexOf(duplicates, 1)
output index7 int = lastIndexOf(duplicates, 1)

L'output dell'esempio precedente è:

Nome Type Valore
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

intersection

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

Restituisce una matrice o un oggetto singoli con gli elementi comuni dei parametri.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
arg1 matrice o oggetto Primo valore da usare per cercare elementi comuni.
arg2 matrice o oggetto Secondo valore da usare per cercare elementi comuni.
altri argomenti No matrice o oggetto Valori aggiuntivi da usare per cercare elementi comuni.

Valore restituito

Una matrice o un oggetto con elementi comuni. L'ordine degli elementi è determinato dal primo parametro della matrice.

Esempio

L'esempio seguente mostra come usare l'intersezione con matrici e oggetti:

param firstObject object = {
  one: 'a'
  two: 'b'
  three: 'c'
}

param secondObject object = {
  one: 'a'
  two: 'z'
  three: 'c'
}

param firstArray array = [
  'one'
  'two'
  'three'
]

param secondArray array = [
  'two'
  'three'
]

output objectOutput object = intersection(firstObject, secondObject)
output arrayOutput array = intersection(firstArray, secondArray)

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
objectOutput Oggetto {"one": "a", "three": "c"}
arrayOutput Matrice ["two", "three"]

Il primo parametro di matrice determina l'ordine degli elementi intersecati. Nell'esempio seguente viene illustrato come l'ordine degli elementi restituiti sia basato su quale matrice è la prima.

var array1 = [
  1
  2
  3
  4
]

var array2 = [
  3
  2
  1
]

var array3 = [
  4
  1
  3
  2
]

output commonUp array = intersection(array1, array2, array3)
output commonDown array = intersection(array2, array3, array1)

L'output dell'esempio precedente è:

Nome Type Valore
commonUp array [1, 2, 3]
commonDown array [3, 2, 1]

ultimo

last(arg1)

Restituisce l'ultimo elemento della matrice o l'ultimo carattere della stringa.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
arg1 stringa o matrice Valore per recuperare l'ultimo elemento o carattere.

Valore restituito

Il tipo (string, int, array o object) dell'ultimo elemento di una matrice o l'ultimo carattere di una stringa.

Esempio

L'esempio seguente mostra come usare l'ultima funzione con una matrice e una stringa.

param arrayToTest array = [
  'one'
  'two'
  'three'
]

output arrayOutput string = last(arrayToTest)
output stringOutput string = last('One Two three')

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
arrayOutput String tre
stringOutput String e

lastIndexOf

lastIndexOf(arrayToSearch, itemToFind)

Restituisce un intero per l'indice dell'ultima occorrenza di un elemento in una matrice. Il confronto è sensibile alle maiuscole per le stringhe.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
arrayToSearch array La matrice da usare per trovare l'indice dell'elemento cercato.
itemToFind int, stringa, matrice o oggetto L’elemento da trovare nella matrice.

Valore restituito

Un intero che rappresenta l'ultimo indice dell'elemento nella matrice. L’indice è in base zero. Se l'elemento non viene trovato, viene restituito -1.

Esempi

L'esempio seguente mostra come usare le funzioni indexOf e lastIndexOf:

var names = [
  'one'
  'two'
  'three'
]

var numbers = [
  4
  5
  6
]

var collection = [
  names
  numbers
]

var duplicates = [
  1
  2
  3
  1
]

output index1 int = lastIndexOf(names, 'two')
output index2 int = indexOf(names, 'one')
output notFoundIndex1 int = lastIndexOf(names, 'Three')

output index3 int = lastIndexOf(numbers, 4)
output index4 int = indexOf(numbers, 6)
output notFoundIndex2 int = lastIndexOf(numbers, '5')

output index5 int = indexOf(collection, numbers)

output index6 int = indexOf(duplicates, 1)
output index7 int = lastIndexOf(duplicates, 1)

L'output dell'esempio precedente è:

Nome Type Valore
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)

Restituisce il numero di elementi in una matrice, caratteri in una stringa o proprietà a livello radice in un oggetto.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
arg1 matrice, stringa o oggetto La matrice da utilizzare per ottenere il numero di elementi, la stringa da utilizzare per ottenere il numero di caratteri o l'oggetto da utilizzare per ottenere il numero di proprietà a livello radice.

Valore restituito

Numero intero

Esempio

L'esempio seguente mostra come usare la funzione length con una matrice e una stringa:

param arrayToTest array = [
  'one'
  'two'
  'three'
]
param stringToTest string = 'One Two Three'
param objectToTest object = {
  propA: 'one'
  propB: 'two'
  propC: 'three'
  propD: {
    'propD-1': 'sub'
    'propD-2': 'sub'
  }
}

output arrayLength int = length(arrayToTest)
output stringLength int = length(stringToTest)
output objectLength int = length(objectToTest)

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
arrayLength Int 3
stringLength Int 13
objectLength Int 4

Esempi di avvio rapido

L'esempio seguente viene estratto da un modello di avvio rapido, Distribuzione di Gestione API in una VNet esterna con IP pubblico:

@description('Numbers for availability zones, for example, 1,2,3.')
param availabilityZones array = [
  '1'
  '2'
]

resource exampleApim 'Microsoft.ApiManagement/service@2023-05-01-preview' = {
  name: apiManagementName
  location: location
  sku: {
    name: sku
    capacity: skuCount
  }
  zones: ((length(availabilityZones) == 0) ? null : availabilityZones)
  ...
}

Nell'espressione condizionale, la lengthfunzione controlla la lunghezza della matrice availabilityZones.

Altri esempi sono disponibili in questi file Bicep di avvio rapido:

max

max(arg1)

Restituisce il valore massimo da una matrice di numeri interi o da un elenco di numeri interi delimitato da virgole.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
arg1 matrice di numeri interi o elenco di numeri interi delimitato da virgole La raccolta per ottenere il valore massimo.

Valore restituito

Numero intero che rappresenta il valore massimo.

Esempio

L'esempio seguente mostra come usare la funzione max con una matrice e un elenco di numeri interi:

param arrayToTest array = [
  0
  3
  2
  5
  4
]

output arrayOutput int = max(arrayToTest)
output intOutput int = max(0,3,2,5,4)

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
arrayOutput Int 5
intOutput Int 5

min

min(arg1)

Restituisce il valore minimo di una matrice di numeri interi o di un elenco di numeri interi delimitato da virgole.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
arg1 matrice di numeri interi o elenco di numeri interi delimitato da virgole La raccolta per ottenere il valore minimo.

Valore restituito

Numero intero che rappresenta il valore minimo.

Esempio

L'esempio seguente mostra come usare la funzione min con una matrice e un elenco di numeri interi:

param arrayToTest array = [
  0
  3
  2
  5
  4
]

output arrayOutput int = min(arrayToTest)
output intOutput int = min(0,3,2,5,4)

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
arrayOutput Int 0
intOutput Int 0

range

range(startIndex, count)

Crea una matrice di numeri interi da un numero intero iniziale, contenente il numero di elementi.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
startIndex int Primo numero intero nella matrice. La somma di startIndex e count non deve essere maggiore di 2147483647.
numero int Numero di valori interi della matrice. Deve essere un numero intero non negativo fino a 10000.

Valore restituito

Matrice di numeri interi.

Esempio

L'esempio seguente mostra come usare la funzione range:

param startingInt int = 5
param numberOfElements int = 3

output rangeOutput array = range(startingInt, numberOfElements)

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
rangeOutput Matrice [5, 6, 7]

Esempi di avvio rapido

L'esempio seguente viene estratto da un modello di avvio rapido, Due macchine virtuali nella rete virtuale - Bilanciamento del carico interno e regole LB :

...
var numberOfInstances = 2

resource networkInterface 'Microsoft.Network/networkInterfaces@2023-11-01' = [for i in range(0, numberOfInstances): {
  name: '${networkInterfaceName}${i}'
  location: location
  properties: {
    ...
  }
}]

resource vm 'Microsoft.Compute/virtualMachines@2024-03-01' = [for i in range(0, numberOfInstances): {
  name: '${vmNamePrefix}${i}'
  location: location
  properties: {
    ...
  }
}]

Il file Bicep crea due risorse networkInterface e due virtualMachine.

Altri esempi sono disponibili in questi file Bicep di avvio rapido:

skip

skip(originalValue, numberToSkip)

Restituisce una matrice con tutti gli elementi dopo il numero specificato nella matrice stessa o una stringa con tutti i caratteri dopo il numero specificato nella stringa stessa.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
originalValue stringa o matrice Stringa o matrice da usare per i valori da ignorare.
numberToSkip int Numero di elementi o caratteri da ignorare. Se il valore è minore o uguale a 0, vengono restituiti tutti gli elementi o i caratteri nel valore. Se il valore è maggiore della lunghezza della stringa o della matrice, viene restituita una stringa o una matrice vuota.

Valore restituito

Stringa o matrice.

Esempio

L'esempio seguente ignora il numero di elementi specificato nella matrice e il numero di caratteri specificato in una stringa.

param testArray array = [
  'one'
  'two'
  'three'
]
param elementsToSkip int = 2
param testString string = 'one two three'
param charactersToSkip int = 4

output arrayOutput array = skip(testArray, elementsToSkip)
output stringOutput string = skip(testString, charactersToSkip)

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
arrayOutput Matrice ["three"]
stringOutput String two three

take

take(originalValue, numberToTake)

Restituisce una matrice con il numero specificato di elementi dall'inizio della matrice, o una stringa con il numero specificato di caratteri dall'inizio della stringa.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
originalValue stringa o matrice Stringa o matrice da cui prendere gli elementi.
numberToTake int Numero di elementi o caratteri da prendere. Se il valore è minore o uguale a 0, viene restituita una stringa o un matrice vuota. Se è maggiore della lunghezza della stringa o della matrice specificate, vengono restituiti tutti gli elementi nella stringa o nella matrice.

Valore restituito

Stringa o matrice.

Esempio

L'esempio seguente prende il numero specificato di elementi dalla matrice e di caratteri dalla stringa.

param testArray array = [
  'one'
  'two'
  'three'
]
param elementsToTake int = 2
param testString string = 'one two three'
param charactersToTake int = 2

output arrayOutput array = take(testArray, elementsToTake)
output stringOutput string = take(testString, charactersToTake)

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
arrayOutput Matrice ["one", "two"]
stringOutput String on

union

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

Restituisce una matrice o un oggetto singoli con tutti gli elementi dei parametri. Per le matrici, i valori duplicati vengono inclusi una sola volta. Per gli oggetti, i nomi delle proprietà duplicati vengono inclusi una sola volta.

Spazio dei nomi: sys.

Parametri

Parametro Richiesto Type Descrizione
arg1 matrice o oggetto Primo valore da usare per l'aggiunta di elementi.
arg2 matrice o oggetto Secondo valore da usare per l'aggiunta di elementi.
altri argomenti No matrice o oggetto Valori aggiuntivi da usare per unire gli elementi.

Valore restituito

Una matrice o un oggetto.

Osservazioni:

La funzione di unione usa la sequenza dei parametri per determinare l'ordine e i valori del risultato.

Per le matrici, la funzione itera attraverso ogni elemento nel primo parametro e lo aggiunge al risultato, se non è già presente. Ripete quindi il processo per il secondo parametro e per gli altri parametri. Se un valore è già presente, la sua posizione precedente nella matrice viene mantenuta.

Per gli oggetti, i nomi delle proprietà e i valori del primo parametro vengono aggiunti al risultato. Per i parametri successivi, tutti i nuovi nomi vengono aggiunti al risultato. Se un parametro successivo ha una proprietà con stesso nome, tale valore sovrascrive il valore esistente. L'ordine delle proprietà non è garantito.

La funzione di unione unisce non solo gli elementi di primo livello, ma unisce in modo ricorsivo anche tutti gli oggetti annidati all'interno di essi. I valori annidati della matrice non vengono uniti. Vedere il secondo esempio nella sezione seguente.

Esempio

L'esempio seguente mostra come usare l'unione con matrici e oggetti:

param firstObject object = {
  one: 'a'
  two: 'b'
  three: 'c1'
}

param secondObject object = {
  three: 'c2'
  four: 'd'
  five: 'e'
}

param firstArray array = [
  'one'
  'two'
  'three'
]

param secondArray array = [
  'three'
  'four'
  'two'
]

output objectOutput object = union(firstObject, secondObject)
output arrayOutput array = union(firstArray, secondArray)

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type Valore
objectOutput Oggetto {"one": "a", "two": "b", "three": "c2", "four": "d", "five": "e"}
arrayOutput Matrice ["one", "two", "three", "four"]

L'esempio seguente mostra la funzionalità deep merge:

var firstObject = {
  property: {
    one: 'a'
    two: 'b'
    three: 'c1'
  }
  nestedArray: [
    1
    2
  ]
}
var secondObject = {
  property: {
    three: 'c2'
    four: 'd'
    five: 'e'
  }
  nestedArray: [
    3
    4
  ]
}
var firstArray = [
  [
    'one'
    'two'
  ]
  [
    'three'
  ]
]
var secondArray = [
  [
    'three'
  ]
  [
    'four'
    'two'
  ]
]

output objectOutput object = union(firstObject, secondObject)
output arrayOutput array = union(firstArray, secondArray)

L'output dell'esempio precedente è:

Nome Type Valore
objectOutput Oggetto {"property":{"one":"a","two":"b","three":"c2","four":"d","five":"e"},"nestedArray":[3,4]}
arrayOutput Matrice [["one","two"],["three"],["four","two"]]

Se le matrici annidate sono state unite, il valore di objectOutput.nestedArray sarà [1, 2, 3, 4], e il valore di arrayOutput sarà [["one", "two", "three"], ["three", "four", "two"]].

Passaggi successivi

  • Per ottenere una matrice di valori stringa delimitata da un valore, vedere split.