Objectfuncties voor Bicep
In dit artikel worden de Bicep-functies beschreven voor het werken met objecten.
bevat
contains(container, itemToFind)
Hiermee wordt gecontroleerd of een matrix een waarde bevat, een object een sleutel bevat of een tekenreeks een subtekenreeks bevat. De tekenreeksvergelijking is hoofdlettergevoelig. Wanneer u echter test of een object een sleutel bevat, is de vergelijking niet hoofdlettergevoelig.
Naamruimte: sys.
Parameters
Parameter | Vereist | Type | Description |
---|---|---|---|
container | Ja | matrix, object of tekenreeks | De waarde die de te zoeken waarde bevat. |
itemToFind | Ja | tekenreeks of int | De te vinden waarde. |
Retourwaarde
Waar als het item wordt gevonden; anders onwaar.
Opmerking
In het volgende voorbeeld ziet u hoe u deze kunt gebruiken contains
met verschillende typen:
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')
De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:
Name | Type | Weergegeven als |
---|---|---|
stringTrue | Bool | Waar |
stringFalse | Bool | Onwaar |
objectTrue | Bool | Waar |
objectFalse | Bool | Onwaar |
arrayTrue | Bool | Waar |
arrayFalse | Bool | Onwaar |
empty
empty(itemToTest)
Bepaalt of een matrix, object of tekenreeks leeg of null is.
Naamruimte: sys.
Parameters
Parameter | Vereist | Type | Description |
---|---|---|---|
itemToTest | Ja | matrix, object of tekenreeks | De waarde om te controleren of deze leeg of null is. |
Retourwaarde
Retourneert Waar als de waarde leeg of null is; anders onwaar.
Opmerking
In het volgende voorbeeld wordt gecontroleerd of een matrix, object en tekenreeks leeg of null zijn.
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)
De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:
Name | Type | Weergegeven als |
---|---|---|
arrayEmpty | Bool | Waar |
objectEmpty | Bool | Waar |
stringEmpty | Bool | Waar |
stringNull | Bool | Waar |
kruispunt
intersection(arg1, arg2, arg3, ...)
Retourneert één matrix of object met de algemene elementen van de parameters.
Naamruimte: sys.
Parameters
Parameter | Vereist | Type | Description |
---|---|---|---|
arg1 | Ja | matrix of object | De eerste waarde die moet worden gebruikt voor het vinden van algemene elementen. |
arg2 | Ja | matrix of object | De tweede waarde die moet worden gebruikt voor het vinden van algemene elementen. |
aanvullende argumenten | Nee | matrix of object | Meer waarden die moeten worden gebruikt voor het vinden van algemene elementen. |
Retourwaarde
Een matrix of object met de gemeenschappelijke elementen.
Opmerking
In het volgende voorbeeld ziet u hoe u deze kunt gebruiken intersection
met matrices en objecten:
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)
De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:
Name | Type | Weergegeven als |
---|---|---|
objectOutput | Object | {"one": "a", "three": "c"} |
arrayOutput | Matrix | ["twee", "drie"] |
items
items(object)
Converteert een woordenlijstobject naar een matrix. Zie toObject over het converteren van een matrix naar een object.
Naamruimte: sys.
Parameters
Parameter | Vereist | Type | Description |
---|---|---|---|
object | Ja | object | Het woordenlijstobject dat moet worden geconverteerd naar een matrix. |
Retourwaarde
Een matrix met objecten voor de geconverteerde woordenlijst. Elk object in de matrix heeft een key
eigenschap die de sleutelwaarde voor de woordenlijst bevat. Elk object heeft ook een value
eigenschap die de eigenschappen voor het object bevat.
Opmerking
In het volgende voorbeeld wordt een woordenlijstobject geconverteerd naar een matrix. Voor elk object in de matrix wordt een nieuw object met gewijzigde waarden gemaakt.
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
In het voorgaande voorbeeld wordt het volgende geretourneerd:
"modifiedResult": {
"type": "Array",
"value": [
{
"fullName": "Example item 1",
"itemEnabled": true,
"key": "item001"
},
{
"fullName": "Example item 2",
"itemEnabled": false,
"key": "item002"
}
]
}
In het volgende voorbeeld ziet u de matrix die wordt geretourneerd vanuit de itemsfunctie.
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
Het voorbeeld retourneert:
"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
}
}
]
}
In JSON is een object een niet-geordende verzameling van nul of meer sleutel-waardeparen. De volgorde kan verschillen, afhankelijk van de implementaties. De functie Bicep items() sorteert bijvoorbeeld de objecten in alfabetische volgorde. Op andere plaatsen kan de oorspronkelijke volgorde behouden blijven. Vanwege dit niet-determinisme vermijdt u veronderstellingen over de volgorde van objectsleutels bij het schrijven van code, die communiceert met implementatieparameters en uitvoer.
json
json(arg1)
Converteert een geldige JSON-tekenreeks naar een JSON-gegevenstype.
Naamruimte: sys.
Parameters
Parameter | Vereist | Type | Description |
---|---|---|---|
arg1 | Ja | tekenreeks | De waarde die moet worden geconverteerd naar JSON. De tekenreeks moet een juist opgemaakte JSON-tekenreeks zijn. |
Retourwaarde
Het JSON-gegevenstype uit de opgegeven tekenreeks of een lege waarde wanneer null is opgegeven.
Opmerkingen
Als u een parameterwaarde of variabele wilt opnemen in het JSON-object, gebruikt u de samenvoegfunctie om de tekenreeks te maken die u aan de functie doorgeeft.
Opmerking
In het volgende voorbeeld ziet u hoe u de json
functie gebruikt. U ziet dat u null kunt doorgeven voor een leeg object.
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, '"}'))
De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:
Name | Type | Weergegeven als |
---|---|---|
emptyObjectOutput | Booleaanse waarde | Waar |
objectOutput | Object | {"a": "b"} |
stringOutput | String | test |
Booleaanseoutput | Booleaanse waarde | Waar |
intOutput | Geheel getal | 3 |
arrayOutput | Matrix | [ 1, 2, 3 ] |
concatObjectOutput | Object | { "a": "demo value" } |
length
length(arg1)
Retourneert het aantal elementen in een matrix, tekens in een tekenreeks of eigenschappen op hoofdniveau in een object.
Naamruimte: sys.
Parameters
Parameter | Vereist | Type | Description |
---|---|---|---|
arg1 | Ja | matrix, tekenreeks of object | De matrix die moet worden gebruikt voor het ophalen van het aantal elementen, de tekenreeks die moet worden gebruikt voor het ophalen van het aantal tekens of het object dat moet worden gebruikt voor het ophalen van het aantal eigenschappen op hoofdniveau. |
Retourwaarde
Een int.
Opmerking
In het volgende voorbeeld ziet u hoe u deze kunt gebruiken length
met een matrix en tekenreeks:
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)
De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:
Name | Type | Weergegeven als |
---|---|---|
arrayLength | Int | 3 |
stringLength | Int | 13 |
objectLength | Int | 4 |
objectKeys
objectKeys(object)
Retourneert de sleutels van een object, waarbij een object een verzameling sleutel-waardeparen is.
Naamruimte: sys.
Parameters
Parameter | Vereist | Type | Description |
---|---|---|---|
object | Ja | object | Het object, een verzameling sleutel-waardeparen. |
Retourwaarde
Een matrix.
Opmerking
In het volgende voorbeeld ziet u hoe u dit kunt gebruiken objectKeys
met een object:
var obj = { a: 1, b: 2 }
output keyArray array = objectKeys(obj)
De uitvoer uit het voorgaande voorbeeld is:
Name | Type | Weergegeven als |
---|---|---|
keyArray | Matrix | [ "a", "b" ] |
keyArray retourneert een lijst met sleutels van het invoerobject.
In JSON is een object een niet-geordende verzameling van nul of meer sleutel-waardeparen. De volgorde kan verschillen, afhankelijk van de implementaties. De functie Bicep items() sorteert bijvoorbeeld de objecten in alfabetische volgorde. Op andere plaatsen kan de oorspronkelijke volgorde behouden blijven. Vanwege dit niet-determinisme vermijdt u veronderstellingen over de volgorde van objectsleutels bij het schrijven van code, die communiceert met implementatieparameters en uitvoer.
ondiepemering
shallowMerge(inputArray)
Combineert een matrix met objecten, waarbij alleen de objecten op het hoogste niveau worden samengevoegd. Dit betekent dat als de objecten die worden samengevoegd geneste objecten bevatten, het geneste object niet diep worden samengevoegd. In plaats daarvan worden ze volledig vervangen door de bijbehorende eigenschap van het samenvoegingsobject.
Naamruimte: sys.
Parameters
Parameter | Vereist | Type | Description |
---|---|---|---|
inputArray | Ja | matrix | Een matrix met objecten. |
Retourwaarde
Een object.
Opmerking
In het volgende voorbeeld ziet u hoe u :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)
De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:
Name | Type | Weergegeven als |
---|---|---|
firstOutput | object | {"one":"a","two":"c"} |
secondOutput | object | {"one":"a","geneste":{"b":2},"twee":"b"} |
firstOutput toont de eigenschappen van de samenvoegobjecten worden gecombineerd tot een nieuw object. Als er conflicterende eigenschappen zijn (dat wil gezegd eigenschappen met dezelfde naam), heeft de eigenschap van het laatste object dat wordt samengevoegd, meestal voorrang.
secondOutput toont dat de ondiepe samenvoeging deze geneste objecten niet recursief samenvoegt. In plaats daarvan wordt het hele geneste object vervangen door de bijbehorende eigenschap van het samenvoegingsobject.
union
union(arg1, arg2, arg3, ...)
Retourneert één matrix of object met alle elementen uit de parameters. Voor matrices worden dubbele waarden eenmaal opgenomen. Voor objecten worden dubbele eigenschapsnamen slechts eenmaal opgenomen.
Naamruimte: sys.
Parameters
Parameter | Vereist | Type | Description |
---|---|---|---|
arg1 | Ja | matrix of object | De eerste waarde die moet worden gebruikt voor het samenvoegen van elementen. |
arg2 | Ja | matrix of object | De tweede waarde die moet worden gebruikt voor het samenvoegen van elementen. |
aanvullende argumenten | Nee | matrix of object | Meer waarden die moeten worden gebruikt voor het samenvoegen van elementen. |
Retourwaarde
Een matrix of object.
Opmerkingen
De samenvoegfunctie gebruikt de volgorde van de parameters om de volgorde en waarden van het resultaat te bepalen.
Voor matrices doorloopt de functie elk element in de eerste parameter en voegt deze toe aan het resultaat als deze nog niet aanwezig is. Vervolgens wordt het proces voor de tweede parameter en eventuele andere parameters herhaald. Als er al een waarde aanwezig is, blijft de plaatsing in de matrix eerder behouden.
Voor objecten worden eigenschapsnamen en -waarden uit de eerste parameter toegevoegd aan het resultaat. Voor latere parameters worden eventuele nieuwe namen toegevoegd aan het resultaat. Als een latere parameter een eigenschap met dezelfde naam heeft, overschrijft die waarde de bestaande waarde. De volgorde van de eigenschappen wordt niet gegarandeerd.
De samenvoegfunctie voegt niet alleen de elementen op het hoogste niveau samen, maar voegt ook recursief alle geneste objecten daarin samen. Geneste matrixwaarden worden niet samengevoegd. Zie het tweede voorbeeld in de volgende sectie.
Opmerking
In het volgende voorbeeld ziet u hoe u deze kunt gebruiken union
met matrices en objecten:
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)
De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:
Name | Type | Weergegeven als |
---|---|---|
objectOutput | Object | {"one": "a", "two": "b", "three": "c2", "four": "d", "five": "e"} |
arrayOutput | Matrix | ["één", "twee", "drie", "vier"] |
In het volgende voorbeeld ziet u de uitgebreide samenvoegfunctie:
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)
De uitvoer uit het voorgaande voorbeeld is:
Name | Type | Weergegeven als |
---|---|---|
objectOutput | Object | {"property":{"one":"a","two":"b","three":"c2","four":"d","five":"e"},"nestedArray":[3,4]} |
arrayOutput | Matrix | [["één","twee"],["drie"],["vier","twee"]] |
Als geneste matrices zijn samengevoegd, is de waarde van objectOutput.nestedArray [1, 2, 3, 4] en de waarde van arrayOutput [["one", "two", "three",["three", "four", "two"]].
Volgende stappen
- Zie De structuur en syntaxis van Bicep-bestanden begrijpen voor een beschrijving van de secties in een Bicep-bestand.