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

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.
ytterligare argument Nej matris eller objekt Ytterligare värden som ska användas 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 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"]

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.

Anmärkningar

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 använder json-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 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

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 Ytterligare värden som ska användas för sammanfogning av element.

Returvärde

En matris eller ett objekt.

Anmärkningar

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 ytterligare 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