Objektfunktionen für Bicep
In diesem Artikel werden die Bicep-Funktionen für die Arbeit mit Objekten beschrieben.
contains
contains(container, itemToFind)
Überprüft, ob ein Array einen Wert enthält, ein Objekt einen Schlüssel enthält oder eine Zeichenfolge eine Teilzeichenfolge enthält. Die Groß-/Kleinschreibung wird beim Zeichenfolgenvergleich beachtet. Wenn Sie jedoch testen, ob ein Objekt einen Schlüssel enthält, wird die Groß-/Kleinschreibung beim Vergleich nicht beachtet.
Namespace: sys.
Parameter
Parameter | Erforderlich | Type | BESCHREIBUNG |
---|---|---|---|
Container | Ja | Array, Objekt oder Zeichenfolge | Der Wert, der den zu suchenden Wert enthält. |
itemToFind | Ja | Zeichenfolge oder ganze Zahl | Der zu suchende Wert. |
Rückgabewert
True, wenn das Element gefunden wurde; andernfalls False.
Beispiel
Das folgende Beispiel zeigt die Verwendung von contains
mit unterschiedlichen 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')
Die Ausgabe aus dem vorherigen Beispiel mit den Standardwerten lautet:
Name | type | Wert |
---|---|---|
stringTrue | Bool | True |
stringFalse | Bool | False |
objectTrue | Bool | True |
objectFalse | Bool | False |
arrayTrue | Bool | True |
arrayFalse | Bool | False |
empty
empty(itemToTest)
Bestimmt, ob ein Array, ein Objekt oder eine Zeichenfolge leer oder null ist.
Namespace: sys.
Parameter
Parameter | Erforderlich | Type | BESCHREIBUNG |
---|---|---|---|
itemToTest | Ja | Array, Objekt oder Zeichenfolge | Der Wert, der überprüft werden soll, ob er leer oder null ist. |
Rückgabewert
Gibt True zurück, wenn der Wert leer oder null ist; andernfalls False.
Beispiel
Im folgenden Beispiel wird überprüft, ob ein Array, ein Objekt und eine Zeichenfolge leer oder null sind.
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)
Die Ausgabe aus dem vorherigen Beispiel mit den Standardwerten lautet:
Name | type | Wert |
---|---|---|
arrayEmpty | Bool | True |
objectEmpty | Bool | True |
stringEmpty | Bool | True |
stringNull | Bool | True |
Schnittmenge
intersection(arg1, arg2, arg3, ...)
Gibt ein einzelnes Array oder ein Objekt mit den gemeinsamen Elementen aus den Parametern zurück.
Namespace: sys.
Parameter
Parameter | Erforderlich | Type | BESCHREIBUNG |
---|---|---|---|
arg1 | Ja | Array oder Objekt | Der erste Wert für die Suche nach gemeinsamen Elementen. |
arg2 | Ja | Array oder Objekt | Der zweite Wert für die Suche nach gemeinsamen Elementen. |
zusätzliche Argumente | Nein | Array oder Objekt | Mehr Werte für die Suche nach gemeinsamen Elementen. |
Rückgabewert
Ein Array oder Objekt mit den gemeinsamen Elementen.
Beispiel
Das folgende Beispiel zeigt die Verwendung von intersection
mit Arrays und Objekten:
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)
Die Ausgabe aus dem vorherigen Beispiel mit den Standardwerten lautet:
Name | type | Wert |
---|---|---|
objectOutput | Object | {"one": "a", "three": "c"} |
arrayOutput | Array | ["two", "three"] |
items
items(object)
Konvertiert ein Wörterbuchobjekt in ein Array. Informationen zum Konvertieren eines Arrays in ein Objekt finden Sie unter toObject.
Namespace: sys.
Parameter
Parameter | Erforderlich | Type | Beschreibung |
---|---|---|---|
Objekt (object) | Ja | Objekt (object) | Das Wörterbuchobjekt, das in ein Array konvertiert werden soll. |
Rückgabewert
Ein Array von Objekten für das konvertierte Wörterbuch. Jedes Objekt in dem Array verfügt über eine key
-Eigenschaft, die den Schlüsselwert für das Wörterbuch enthält. Jedes Objekt verfügt außerdem über eine value
-Eigenschaft, die die Eigenschaften für das Objekt enthält.
Beispiel
Im folgenden Beispiel wird ein Wörterbuchobjekt in ein Array konvertiert. Für jedes Objekt im Array wird ein neues Objekt mit geänderten Werten erstellt.
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
Im vorherigen Beispiel wird Folgendes zurückgegeben:
"modifiedResult": {
"type": "Array",
"value": [
{
"fullName": "Example item 1",
"itemEnabled": true,
"key": "item001"
},
{
"fullName": "Example item 2",
"itemEnabled": false,
"key": "item002"
}
]
}
Im folgenden Beispiel wird das Array angezeigt, das von der items-Funktion zurückgegeben wird.
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
Die Rückgabe des Beispiels lautet wie folgt:
"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 ist ein Objekt eine nicht geordnete Auflistung von null oder mehr Schlüssel-Wert-Paaren. Die Reihenfolge kann je nach Implementierung unterschiedlich sein. Die Items()-Funktion von Bicep sortiert die Objekte beispielsweise in alphabetischer Reihenfolge. An anderen Stellen kann die ursprüngliche Reihenfolge beibehalten werden. Aufgrund dieses Nicht-Determinismus sollten Sie beim Schreiben von Code, der mit den Parametern und Ausgaben der Bereitstellung interagiert, keine Annahmen über die Reihenfolge der Objektschlüssel anstellen.
json
json(arg1)
Konvertiert eine gültige JSON-Zeichenfolge in einen JSON-Datentyp.
Namespace: sys.
Parameter
Parameter | Erforderlich | Type | BESCHREIBUNG |
---|---|---|---|
arg1 | Ja | Zeichenfolge | Der in JSON zu konvertierende Wert. Die Zeichenfolge muss eine ordnungsgemäß formatierte JSON-Zeichenfolge sein. |
Rückgabewert
Der JSON-Datentyp aus der angegebenen Zeichenfolge oder ein leerer Wert, wenn null angegeben ist.
Bemerkungen
Wenn Sie einen Parameterwert oder eine Variable in das JSON-Objekt einschließen möchten, verwenden Sie die Funktion concat, um die Zeichenfolge zu erstellen, die Sie an die Funktion übergeben.
Beispiel
Das folgende Beispiel zeigt die Verwendung der Funktion json
. Beachten Sie, dass Sie NULL für ein leeres-Objekt übergeben können.
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, '"}'))
Die Ausgabe aus dem vorherigen Beispiel mit den Standardwerten lautet:
Name | type | Wert |
---|---|---|
emptyObjectOutput | Boolesch | True |
objectOutput | Object | {"a": "b"} |
stringOutput | String | test |
booleanOutput | Boolesch | True |
intOutput | Integer | 3 |
arrayOutput | Array | [ 1, 2, 3 ] |
concatObjectOutput | Object | { "a": "demo value" } |
length
length(arg1)
Gibt die Anzahl von Elementen in einem Array, Zeichen in einer Zeichenfolge oder Eigenschaften auf Stammebene in einem Objekt zurück.
Namespace: sys.
Parameter
Parameter | Erforderlich | Type | BESCHREIBUNG |
---|---|---|---|
arg1 | Ja | Array, Zeichenfolge oder Objekt | Das Array, von dem die Anzahl der Elemente ermittelt werden soll, die Zeichenfolge, von der die Anzahl der Zeichen ermittelt werden soll, oder das Objekt, von dem die Anzahl der Eigenschaften auf Stammebene ermittelt werden soll. |
Rückgabewert
Eine ganze Zahl.
Beispiel
Das folgende Beispiel zeigt die Verwendung von length
mit einem Array und einer Zeichenfolge:
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)
Die Ausgabe aus dem vorherigen Beispiel mit den Standardwerten lautet:
Name | type | Wert |
---|---|---|
arraylength | Int | 3 |
stringLength | Int | 13 |
objectLength | Int | 4 |
objectKeys
objectKeys(object)
Gibt die Schlüssel aus einem Objekt zurück, das eine Auflistung von Schlüssel-Wert-Paaren ist.
Namespace: sys.
Parameter
Parameter | Erforderlich | Type | Beschreibung |
---|---|---|---|
Objekt (object) | Ja | Objekt | Das Objekt, das eine Auflistung von Schlüssel-Wert-Paaren ist. |
Rückgabewert
Ein -Array.
Beispiel
Das folgende Beispiel zeigt die Verwendung von objectKeys
mit einem Objekt:
var obj = { a: 1, b: 2 }
output keyArray array = objectKeys(obj)
Die Ausgabe aus dem vorherigen Beispiel lautet wie folgt:
Name | type | Wert |
---|---|---|
keyArray | Array | [ "a", "b" ] |
keyArray gibt eine Liste der Schlüssel des Eingabeobjekts zurück.
In JSON ist ein Objekt eine nicht geordnete Auflistung von null oder mehr Schlüssel-Wert-Paaren. Die Reihenfolge kann je nach Implementierung unterschiedlich sein. Die Items()-Funktion von Bicep sortiert die Objekte beispielsweise in alphabetischer Reihenfolge. An anderen Stellen kann die ursprüngliche Reihenfolge beibehalten werden. Aufgrund dieses Nicht-Determinismus sollten Sie beim Schreiben von Code, der mit den Parametern und Ausgaben der Bereitstellung interagiert, keine Annahmen über die Reihenfolge der Objektschlüssel anstellen.
shallowMerge
shallowMerge(inputArray)
Kombiniert ein Array von Objekten, wobei nur die Objekte der obersten Ebene zusammengeführt werden. Wenn also die zusammengeführten Objekte geschachtelte Objekte enthalten, werden diese verschachtelten Objekte nicht weiter zusammengeführt. Stattdessen werden sie vollständig durch die entsprechende Eigenschaft aus dem zusammenführenden Objekt ersetzt.
Namespace: sys.
Parameter
Parameter | Erforderlich | Type | BESCHREIBUNG |
---|---|---|---|
inputArray | Ja | array | Ein Array von -Objekten. |
Rückgabewert
Ein Objekt.
Beispiel
Das folgende Beispiel zeigt die Verwendung von 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)
Die Ausgabe aus dem vorherigen Beispiel mit den Standardwerten lautet:
Name | type | Wert |
---|---|---|
firstOutput | Objekt | {"one":"a","two":"c"} |
secondOutput | Objekt | {"one":"a","nested":{"b":2},"two":"b"} |
firstOutput zeigt die Eigenschaften der zusammenzuführenden Objekte in einem neuen Objekt an. Wenn Eigenschaften Konflikte verursachen (d. h. Eigenschaften mit identischen Namen), hat die Eigenschaft aus dem letzten zusammengeführten Objekt in der Regel Vorrang.
secondOutput zeigt, dass die flache Zusammenführung diese geschachtelten Objekte nicht rekursiv zusammenführt. Stattdessen wird das gesamte geschachtelte Objekt durch die entsprechende Eigenschaft aus dem zusammenzuführenden Objekt ersetzt.
union
union(arg1, arg2, arg3, ...)
Gibt ein einzelnes Array oder Objekt mit allen Elementen aus den Parametern zurück. Bei Arrays werden doppelte Werte einmal einbezogen. Bei Objekten werden doppelte Eigenschaftsnamen nur einmal einbezogen.
Namespace: sys.
Parameter
Parameter | Erforderlich | Type | BESCHREIBUNG |
---|---|---|---|
arg1 | Ja | Array oder Objekt | Der erste zum Verknüpfen von Elementen zu verwendende Wert. |
arg2 | Ja | Array oder Objekt | Der zweite zum Verknüpfen von Elementen zu verwendende Wert. |
zusätzliche Argumente | Nein | Array oder Objekt | Mehr zum Verknüpfen von Elementen zu verwendende Werte. |
Rückgabewert
Ein Array oder Objekt.
Hinweise
Die Union-Funktion bestimmt anhand der Abfolge der Parameter die Reihenfolge und die Werte des Ergebnisses.
Bei Arrays durchläuft die Funktion jedes Element im ersten Parameter und fügt es dem Ergebnis hinzu, falls nicht bereits vorhanden. Danach wird der Vorgang für den zweiten und alle weiteren Parameter wiederholt. Wenn ein Wert bereits vorhanden ist, wird seine frühere Platzierung im Array beibehalten.
Für Objekte werden Eigenschaftennamen und Werte aus dem ersten Parameter zum Ergebnis hinzugefügt. Bei späteren Parametern werden dem Ergebnis alle neuen Namen hinzugefügt. Wenn ein späterer Parameter über eine Eigenschaft mit demselben Namen verfügt, überschreibt dieser Wert den vorhandenen Wert. Die Reihenfolge der Eigenschaften ist nicht garantiert.
Die Union-Funktion führt nicht nur die Elemente der obersten Ebene zusammen, sondern auch rekursiv alle darin enthaltenen geschachtelten Objekte. Geschachtelte Arraywerte werden nicht zusammengeführt. Sehen Sie sich das zweite Beispiel im folgenden Abschnitt an.
Beispiel
Das folgende Beispiel zeigt die Verwendung von union
mit Arrays und Objekten:
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)
Die Ausgabe aus dem vorherigen Beispiel mit den Standardwerten lautet:
Name | type | Wert |
---|---|---|
objectOutput | Object | {"one": "a", "two": "b", "three": "c2", "four": "d", "five": "e"} |
arrayOutput | Array | ["one", "two", "three", "four"] |
Das folgende Beispiel zeigt die Funktion „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)
Die Ausgabe aus dem vorherigen Beispiel lautet wie folgt:
Name | type | Wert |
---|---|---|
objectOutput | Object | {"property":{"one":"a","two":"b","three":"c2","four":"d","five":"e"},"nestedArray":[3,4]} |
arrayOutput | Array | [["one","two"],["three"],["four","two"]] |
Wenn geschachtelte Arrays zusammengeführt wurden, lautet der Wert von objectOutput.nestedArray „[1, 2, 3, 4]“, und der Wert von arrayOutput wäre „[["one", "two", "three"], ["three", "four", "two"]]“.
Nächste Schritte
- Eine Beschreibung der Abschnitte in einer Bicep-Datei finden Sie unter Grundlegendes zur Struktur und Syntax von Bicep-Dateien.