Objektfunktioner för Bicep
Den här artikeln beskriver Bicep-funktionerna för att arbeta med objekt.
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 contains
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 eller null.
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 eller null. |
Returvärde
Returnerar Sant om värdet är tomt eller null. Annars falskt.
Exempel
I följande exempel kontrolleras om en matris, ett objekt och en sträng är tomma eller null.
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)
Utdata från föregående exempel med standardvärdena är:
Namn | Typ | Värde |
---|---|---|
arrayEmpty | Bool | Sant |
objectEmpty | Bool | Sant |
stringEmpty | Bool | Sant |
stringNull | Bool | Sant |
vägkorsning
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. |
ytterligare 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.
Exempel
I följande exempel visas hur du använder intersection
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"] |
objekt
items(object)
Konverterar ett ordlisteobjekt till en matris. Se toObject om att konvertera en matris till ett objekt.
Namnområde: sys.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
objekt | Ja | objekt | Ordlisteobjektet som ska konverteras till en matris. |
Returvärde
En matris med objekt för den konverterade ordlistan. Varje objekt i matrisen har en key
egenskap som innehåller nyckelvärdet för ordlistan. Varje objekt har också en value
egenskap som innehåller egenskaperna för objektet.
Exempel
I följande exempel konverteras ett ordlisteobjekt till en matris. För varje objekt i matrisen skapas ett nytt objekt med ändrade värden.
var entities = {
item002: {
enabled: false
displayName: 'Example item 2'
number: 200
}
item001: {
enabled: true
displayName: 'Example item 1'
number: 300
}
}
var modifiedListOfEntities = [for entity in items(entities): {
key: entity.key
fullName: entity.value.displayName
itemEnabled: entity.value.enabled
}]
output modifiedResult array = modifiedListOfEntities
Föregående exempel returnerar:
"modifiedResult": {
"type": "Array",
"value": [
{
"fullName": "Example item 1",
"itemEnabled": true,
"key": "item001"
},
{
"fullName": "Example item 2",
"itemEnabled": false,
"key": "item002"
}
]
}
I följande exempel visas matrisen som returneras från objektfunktionen.
var entities = {
item002: {
enabled: false
displayName: 'Example item 2'
number: 200
}
item001: {
enabled: true
displayName: 'Example item 1'
number: 300
}
}
var entitiesArray = items(entities)
output itemsResult array = entitiesArray
Exemplet returnerar:
"itemsResult": {
"type": "Array",
"value": [
{
"key": "item001",
"value": {
"displayName": "Example item 1",
"enabled": true,
"number": 300
}
},
{
"key": "item002",
"value": {
"displayName": "Example item 2",
"enabled": false,
"number": 200
}
}
]
}
I JSON är ett objekt en osorterad samling med noll eller fler nyckel/värde-par. Beställningen kan variera beroende på implementeringarna. Funktionen Bicep items() sorterar till exempel objekten i alfabetisk ordning. På andra ställen kan den ursprungliga ordningen bevaras. På grund av denna icke-determinism bör du undvika att göra några antaganden om ordningen på objektnycklar när du skriver kod, som interagerar med distributionsparametrar och utdata.
json
json(arg1)
Konverterar en giltig JSON-sträng till en JSON-datatyp.
Namnområde: sys.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
arg1 | Ja | sträng | Värdet som ska konverteras till JSON. Strängen måste vara en korrekt formaterad JSON-sträng. |
Returvärde
JSON-datatypen från den angivna strängen eller ett tomt värde när null anges.
Kommentarer
Om du behöver inkludera ett parametervärde eller en variabel i JSON-objektet använder du funktionen concat för att skapa strängen som du skickar till funktionen.
Exempel
I följande exempel visas hur du json
använder funktionen. Observera att du kan skicka in null för ett tomt objekt.
param jsonEmptyObject string = 'null'
param jsonObject string = '{\'a\': \'b\'}'
param jsonString string = '\'test\''
param jsonBoolean string = 'true'
param jsonInt string = '3'
param jsonArray string = '[[1,2,3]]'
param concatValue string = 'demo value'
output emptyObjectOutput bool = empty(json(jsonEmptyObject))
output objectOutput object = json(jsonObject)
output stringOutput string =json(jsonString)
output booleanOutput bool = json(jsonBoolean)
output intOutput int = json(jsonInt)
output arrayOutput array = json(jsonArray)
output concatObjectOutput object = json(concat('{"a": "', concatValue, '"}'))
Utdata från föregående exempel med standardvärdena är:
Namn | Typ | Värde |
---|---|---|
emptyObjectOutput | Booleskt | Sant |
objectOutput | Objekt | {"a": "b"} |
stringOutput | String | test |
booleanOutput | Booleskt | Sant |
intOutput | Integer | 3 |
arrayOutput | Matris | [ 1, 2, 3 ] |
concatObjectOutput | Objekt | { "a": "demo value" } |
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 length
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 |
objectKeys
objectKeys(object)
Returnerar nycklarna från ett objekt, där ett objekt är en samling nyckel/värde-par.
Namnområde: sys.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
objekt | Ja | objekt | Objektet, som är en samling nyckel/värde-par. |
Returvärde
En matris.
Exempel
I följande exempel visas hur du använder objectKeys
med ett objekt:
var obj = { a: 1, b: 2 }
output keyArray array = objectKeys(obj)
Utdata från föregående exempel är:
Namn | Typ | Värde |
---|---|---|
keyArray | Matris | [ "a", "b" ] |
keyArray returnerar en lista över nycklar för indataobjektet.
I JSON är ett objekt en osorterad samling med noll eller fler nyckel/värde-par. Beställningen kan variera beroende på implementeringarna. Funktionen Bicep items() sorterar till exempel objekten i alfabetisk ordning. På andra ställen kan den ursprungliga ordningen bevaras. På grund av denna icke-determinism bör du undvika att göra några antaganden om ordningen på objektnycklar när du skriver kod, som interagerar med distributionsparametrar och utdata.
shallowMerge
shallowMerge(inputArray)
Kombinerar en matris med objekt, där endast de översta objekten sammanfogas. Det innebär att om objekten som sammanfogas innehåller kapslade objekt sammanfogas inte de kapslade objekten på djupet. I stället ersätts de helt av motsvarande egenskap från det sammanfogande objektet.
Namnområde: sys.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
inputArray | Ja | matris | En matris med objekt. |
Returvärde
Ett objekt.
Exempel
I följande exempel visas hur du använder shallowMerge
:
var firstArray = [{ one: 'a' }, { two: 'b' }, { two: 'c'}]
var secondArray = [{ one: 'a', nested: {a: 1, nested: {c: 3}} }, { two: 'b', nested: {b: 2}}]
output firstOutput object = shallowMerge(firstArray)
output secondOutput object = shallowMerge(secondArray)
Utdata från föregående exempel med standardvärdena är:
Namn | Typ | Värde |
---|---|---|
firstOutput | objekt | {"en":"a","två":"c"} |
secondOutput | objekt | {"en":"a","kapslad":{"b":2},"två":"b"} |
firstOutput visar att egenskaperna från de sammanfogade objekten kombineras till ett nytt objekt. Om det finns motstridiga egenskaper (dvs. egenskaper med samma namn) har egenskapen från det sista objektet som sammanfogades vanligtvis företräde.
secondOutput visar att den grunda sammanfogningen inte rekursivt sammanfogar dessa kapslade objekt. I stället ersätts hela det kapslade objektet med motsvarande egenskap från det sammanfogande objektet.
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. |
ytterligare 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 andra parametrar. Om ett värde redan finns bevaras den tidigare placeringen 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
- En beskrivning av avsnitten i en Bicep-fil finns i Förstå strukturen och syntaxen för Bicep-filer.