Share via


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