Share via


Matrisfunktioner för Bicep

Den här artikeln beskriver Bicep-funktionerna för att arbeta med matriser. Lambda-funktionerna för att arbeta med matriser finns här.

matris

array(convertToArray)

Konverterar värdet till en matris.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
convertToArray Ja int, string, array eller object Värdet som ska konverteras till en matris.

Returvärde

En matris.

Exempel

I följande exempel visas hur du använder matrisfunktionen med olika typer.

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)

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
intOutput Matris [1]
stringOutput Matris ["efgh"]
objectOutput Matris [{"a": "b", "c": "d"}]

concat

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

Kombinerar flera matriser och returnerar den sammanfogade matrisen. Mer information om hur du kombinerar flera strängar finns i concat.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
arg1 Ja matris Den första matrisen för sammanfogning.
fler argument Nej matris Fler matriser i sekventiell ordning för sammanfogning.

Den här funktionen tar valfritt antal matriser och kombinerar dem.

Returvärde

En matris med sammanfogade värden.

Exempel

I följande exempel visas hur du kombinerar två matriser.

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

output return array = concat(firstArray, secondArray)

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
retur Matris ["1-1", "1-2", "1-3", "2-1", "2-2", "2-3"]

innehåller

contains(container, itemToFind)

Kontrollerar om en matris innehåller ett värde, ett objekt innehåller en nyckel eller om en sträng innehåller en delsträng. Strängjämförelsen är skiftlägeskänslig. Men när du testar om ett objekt innehåller en nyckel är jämförelsen skiftlägeskänslig.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
container Ja matris, objekt eller sträng Värdet som innehåller det värde som ska hittas.
itemToFind Ja sträng eller int Värdet som ska hittas.

Returvärde

Sant om objektet hittas, annars Falskt.

Exempel

I följande exempel visas hur du använder containrar med olika typer:

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')

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
stringTrue Bool Sant
stringFalse Bool Falsk
objectTrue Bool Sant
objectFalse Bool Falsk
arrayTrue Bool Sant
arrayFalse Bool Falsk

empty

empty(itemToTest)

Avgör om en matris, ett objekt eller en sträng är tom.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
itemToTest Ja matris, objekt eller sträng Värdet för att kontrollera om det är tomt.

Returvärde

Returnerar Sant om värdet är tomt, annars Falskt.

Exempel

I följande exempel kontrolleras om en matris, ett objekt och en sträng är tomma.

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

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

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
arrayEmpty Bool Sant
objectEmpty Bool Sant
stringEmpty Bool Sant

Snabbstartsexempel

Följande exempel extraheras från en snabbstartsmall, Virtuellt nätverk med diagnostiklogginställningar:

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

...

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

I villkorsuttrycket används den tomma funktionen för att kontrollera om matrisen dnsServers är en tom matris.

Första

first(arg1)

Returnerar det första elementet i matrisen eller det första tecknet i strängen.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
arg1 Ja matris eller sträng Värdet för att hämta det första elementet eller tecknet.

Returvärde

Typen (sträng, int, matris eller objekt) för det första elementet i en matris eller det första tecknet i en sträng.

Exempel

I följande exempel visas hur du använder den första funktionen med en matris och sträng.

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

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

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
arrayOutput String en
stringOutput String O

Platta

flatten(arrayToFlatten)

Tar en matris med matriser och returnerar en matris med subarrayelement i den ursprungliga ordningen. Subarrayer plattas bara ut en gång, inte rekursivt.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
arrayToFlattern Ja matris Matrisen med underarrayer som ska plattas ut.

Returvärde

Matris

Exempel

I följande exempel visas hur du använder funktionen platta ut.

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

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
arrayOutput matris ['one', 'two', 'three', 'four', 'five']

indexOf

indexOf(arrayToSearch, itemToFind)

Returnerar ett heltal för indexet för den första förekomsten av ett objekt i en matris. Jämförelsen är skiftlägeskänslig för strängar.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
arrayToSearch Ja matris Matrisen som ska användas för att hitta indexet för det sökta objektet.
itemToFind Ja int, string, array eller object Objektet som ska hittas i matrisen.

Returvärde

Ett heltal som representerar det första indexet för objektet i matrisen. Indexet är nollbaserat. Om objektet inte hittas returneras -1.

Exempel

I följande exempel visas hur du använder funktionerna indexOf och 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)

Utdata från föregående exempel är:

Namn Typ Värde
index1 heltal 1
index2 heltal 0
index3 heltal 0
index4 heltal 2
index5 heltal 1
index6 heltal 0
index7 heltal 3
notFoundIndex1 heltal -1
notFoundIndex2 heltal -1

Korsningen

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

Returnerar en enskild matris eller ett objekt med de gemensamma elementen från parametrarna.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
arg1 Ja matris eller objekt Det första värdet som ska användas för att hitta vanliga element.
arg2 Ja matris eller objekt Det andra värdet som ska användas för att hitta vanliga element.
fler argument Nej matris eller objekt Fler värden att använda för att hitta vanliga element.

Returvärde

En matris eller ett objekt med de gemensamma elementen. Ordningen på elementen bestäms av den första matrisparametern.

Exempel

I följande exempel visas hur du använder skärningspunkt med matriser och objekt:

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)

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
objectOutput Objekt {"one": "a", "three": "c"}
arrayOutput Matris ["två", "tre"]

Den första matrisparametern avgör ordningen på de korsade elementen. I följande exempel visas hur ordningen på de returnerade elementen baseras på vilken matris som är först.

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)

Utdata från föregående exempel är:

Namn Typ Värde
commonUp matris [1, 2, 3]
commonDown matris [3, 2, 1]

senaste

last(arg1)

Returnerar det sista elementet i matrisen eller det sista tecknet i strängen.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
arg1 Ja matris eller sträng Värdet för att hämta det sista elementet eller tecknet.

Returvärde

Typen (sträng, int, matris eller objekt) för det sista elementet i en matris eller det sista tecknet i en sträng.

Exempel

I följande exempel visas hur du använder den sista funktionen med en matris och sträng.

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

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

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
arrayOutput String tre
stringOutput String e

lastIndexOf

lastIndexOf(arrayToSearch, itemToFind)

Returnerar ett heltal för indexet för den senaste förekomsten av ett objekt i en matris. Jämförelsen är skiftlägeskänslig för strängar.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
arrayToSearch Ja matris Matrisen som ska användas för att hitta indexet för det sökta objektet.
itemToFind Ja int, string, array eller object Objektet som ska hittas i matrisen.

Returvärde

Ett heltal som representerar det sista indexet för objektet i matrisen. Indexet är nollbaserat. Om objektet inte hittas returneras -1.

Exempel

I följande exempel visas hur du använder funktionerna indexOf och 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)

Utdata från föregående exempel är:

Namn Typ Värde
index1 heltal 1
index2 heltal 0
index3 heltal 0
index4 heltal 2
index5 heltal 1
index6 heltal 0
index7 heltal 3
notFoundIndex1 heltal -1
notFoundIndex2 heltal -1

längd

length(arg1)

Returnerar antalet element i en matris, tecken i en sträng eller rotnivåegenskaper i ett objekt.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
arg1 Ja matris, sträng eller objekt Matrisen som ska användas för att hämta antalet element, strängen som ska användas för att hämta antalet tecken eller det objekt som ska användas för att hämta antalet egenskaper på rotnivå.

Returvärde

Ett int.

Exempel

I följande exempel visas hur du använder längd med en matris och sträng:

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)

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
arrayLength Int 3
stringLength Int 13
objectLength Int 4

Snabbstartsexempel

Följande exempel extraheras från en snabbstartsmall, Deploy API Management in external VNet with public IP (Distribuera API Management i ett externt virtuellt nätverk med offentlig IP-adress ):

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

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

I villkorsuttrycket lengthkontrollerar funktionen längden på matrisen availabilityZones.

Fler exempel finns i dessa Bicep-filer för snabbstart:

max

max(arg1)

Returnerar det maximala värdet från en matris med heltal eller en kommaavgränsad lista med heltal.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
arg1 Ja matris med heltal eller kommaavgränsad lista över heltal Samlingen för att hämta det maximala värdet.

Returvärde

En int som representerar det maximala värdet.

Exempel

I följande exempel visas hur du använder max med en matris och en lista med heltal:

param arrayToTest array = [
  0
  3
  2
  5
  4
]

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

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
arrayOutput Int 5
intOutput Int 5

min

min(arg1)

Returnerar det minsta värdet från en matris med heltal eller en kommaavgränsad lista med heltal.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
arg1 Ja matris med heltal eller kommaavgränsad lista över heltal Samlingen för att hämta minimivärdet.

Returvärde

En int som representerar minimivärdet.

Exempel

I följande exempel visas hur du använder min med en matris och en lista med heltal:

param arrayToTest array = [
  0
  3
  2
  5
  4
]

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

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
arrayOutput Int 0
intOutput Int 0

intervall

range(startIndex, count)

Skapar en matris med heltal från ett start heltal och innehåller antalet objekt.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
startIndex Ja heltal Det första heltalet i matrisen. Summan av startIndex och antal får inte vara större än 2147483647.
antal Ja heltal Antalet heltal i matrisen. Måste vara ett heltal som inte är negativt upp till 10000.

Returvärde

En matris med heltal.

Exempel

I följande exempel visas hur du använder intervallfunktionen:

param startingInt int = 5
param numberOfElements int = 3

output rangeOutput array = range(startingInt, numberOfElements)

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
rangeOutput Matris [5, 6, 7]

Snabbstartsexempel

Följande exempel extraheras från en snabbstartsmall, Två virtuella datorer i VNET – intern lastbalanserare och LB-regler :

...
var numberOfInstances = 2

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

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

Bicep-filen skapar två networkInterface och två virtualMachine-resurser.

Fler exempel finns i dessa Bicep-filer för snabbstart:

hoppa över

skip(originalValue, numberToSkip)

Returnerar en matris med alla element efter det angivna talet i matrisen eller returnerar en sträng med alla tecken efter det angivna talet i strängen.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
originalValue Ja matris eller sträng Matrisen eller strängen som ska användas för att hoppa över.
numberToSkip Ja heltal Antalet element eller tecken som ska hoppa över. Om det här värdet är 0 eller mindre returneras alla element eller tecken i värdet. Om den är större än längden på matrisen eller strängen returneras en tom matris eller sträng.

Returvärde

En matris eller sträng.

Exempel

I följande exempel hoppar över det angivna antalet element i matrisen och det angivna antalet tecken i en sträng.

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)

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
arrayOutput Matris ["tre"]
stringOutput String två tre

ta

take(originalValue, numberToTake)

Returnerar en matris med det angivna antalet element från början av matrisen, eller en sträng med det angivna antalet tecken från början av strängen.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
originalValue Ja matris eller sträng Matrisen eller strängen som elementen ska hämtas från.
numberToTake Ja heltal Antalet element eller tecken att ta. Om det här värdet är 0 eller mindre returneras en tom matris eller sträng. Om den är större än längden på den angivna matrisen eller strängen returneras alla element i matrisen eller strängen.

Returvärde

En matris eller sträng.

Exempel

I följande exempel används det angivna antalet element från matrisen och tecken från en sträng.

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)

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
arrayOutput Matris ["en", "två"]
stringOutput String on

union

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

Returnerar en enskild matris eller ett objekt med alla element från parametrarna. För matriser inkluderas duplicerade värden en gång. För objekt inkluderas duplicerade egenskapsnamn bara en gång.

Namnområde: sys.

Parametrar

Parameter Obligatoriskt Type Beskrivning
arg1 Ja matris eller objekt Det första värdet som ska användas för att koppla element.
arg2 Ja matris eller objekt Det andra värdet som ska användas för att koppla element.
fler argument Nej matris eller objekt Fler värden att använda för att koppla element.

Returvärde

En matris eller ett objekt.

Kommentarer

Union-funktionen använder sekvensen för parametrarna för att fastställa resultatets ordning och värden.

För matriser itererar funktionen genom varje element i den första parametern och lägger till den i resultatet om den inte redan finns. Sedan upprepas processen för den andra parametern och eventuella fler parametrar. Om ett värde redan finns bevaras dess tidigare placering i matrisen.

För objekt läggs egenskapsnamn och värden från den första parametern till i resultatet. För senare parametrar läggs alla nya namn till i resultatet. Om en senare parameter har en egenskap med samma namn skriver det värdet över det befintliga värdet. Ordningen på egenskaperna är inte garanterad.

Union-funktionen sammanfogar inte bara de översta elementen utan sammanfogar också rekursivt alla kapslade objekt i dem. Kapslade matrisvärden sammanfogas inte. Se det andra exemplet i följande avsnitt.

Exempel

I följande exempel visas hur du använder union med matriser och objekt:

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)

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
objectOutput Objekt {"one": "a", "two": "b", "three": "c2", "four": "d", "five": "e"}
arrayOutput Matris ["en", "två", "tre", "fyra"]

I följande exempel visas funktionen för djupsammanslagning:

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)

Utdata från föregående exempel är:

Namn Typ Värde
objectOutput Objekt {"property":{"one":"a","two":"b","three":"c2","four":"d","five":"e"},"nestedArray":[3,4]}
arrayOutput Matris [["one","two"],["three"],["four","two"]]

Om kapslade matriser sammanfogades skulle värdet för objectOutput.nestedArray vara [1, 2, 3, 4], och värdet för arrayOutput skulle vara [["one", "two", "three"], ["three", "four", "two"]].

Nästa steg

  • Information om hur du hämtar en matris med strängvärden avgränsade med ett värde finns i dela.