Sdílet prostřednictvím


Objektové funkce pro Bicep

Tento článek popisuje funkce Bicep pro práci s objekty.

obsahuje

contains(container, itemToFind)

Kontroluje, zda pole obsahuje hodnotu, objekt obsahuje klíč nebo řetězec obsahuje podřetězce. Porovnání řetězců se rozlišují malá a velká písmena. Při testování, pokud objekt obsahuje klíč, je však porovnání nerozlišující malá a velká písmena.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
kontejner Ano pole, objekt nebo řetězec Hodnota, která obsahuje hodnotu, kterou chcete najít.
itemToFind Ano řetězec nebo int Hodnota, kterou chcete najít.

Vrácená hodnota

Hodnota True , pokud je položka nalezena; v opačném případě false.

Příklad

Následující příklad ukazuje, jak se používá contains s různými typy:

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

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
stringTrue Bool True
stringFalse Bool False
objectTrue Bool True
objectFalse Bool False
arrayTrue Bool True
arrayFalse Bool False

empty

empty(itemToTest)

Určuje, zda je pole, objekt nebo řetězec prázdné nebo null.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
itemToTest Ano pole, objekt nebo řetězec Hodnota, která se má zkontrolovat, jestli je prázdná nebo null.

Vrácená hodnota

Vrátí hodnotu True , pokud je hodnota prázdná nebo null; jinak False.

Příklad

Následující příklad zkontroluje, zda pole, objekt a řetězec jsou prázdné nebo 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)

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
arrayEmpty Bool True
objectEmpty Bool True
stringEmpty Bool True
stringNull Bool True

křižovatka

intersection(arg1, arg2, arg3, ...)

Vrátí jedno pole nebo objekt se společnými prvky z parametrů.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
arg1 Ano pole nebo objekt První hodnota, která se má použít k vyhledání společných prvků.
arg2 Ano pole nebo objekt Druhá hodnota, která se má použít k vyhledání společných prvků.
další argumenty No pole nebo objekt Další hodnoty, které se mají použít k vyhledání běžných prvků.

Vrácená hodnota

Pole nebo objekt se společnými prvky.

Příklad

Následující příklad ukazuje použití intersection s poli a objekty:

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)

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
objectOutput Objekt {"one": "a", "three": "c"}
arrayOutput Pole ["two", "three"]

položky

items(object)

Převede objekt slovníku na pole. Viz toObject o převodu pole na objekt.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
objekt Ano objekt Objekt slovníku, který se má převést na pole.

Vrácená hodnota

Pole objektů pro převedený slovník. Každý objekt v poli má key vlastnost, která obsahuje hodnotu klíče pro slovník. Každý objekt má value také vlastnost, která obsahuje vlastnosti objektu.

Příklad

Následující příklad převede objekt slovníku na pole. Pro každý objekt v poli vytvoří nový objekt s upravenými hodnotami.

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

Předchozí příklad vrátí:

"modifiedResult": {
  "type": "Array",
  "value": [
    {
      "fullName": "Example item 1",
      "itemEnabled": true,
      "key": "item001"
    },
    {
      "fullName": "Example item 2",
      "itemEnabled": false,
      "key": "item002"
    }
  ]
}

Následující příklad ukazuje pole, které je vráceno z funkce items.

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

Příklad vrátí:

"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
      }
    }
  ]
}

Ve formátu JSON je objekt neuspořádanou kolekcí párů klíč/hodnota nula nebo více. Řazení se může lišit v závislosti na implementacích. Například funkce Bicep items() seřadí objekty v abecedním pořadí. Na jiných místech lze původní řazení zachovat. Kvůli tomuto ne determinismu nepoužívejte žádné předpoklady týkající se řazení klíčů objektů při psaní kódu, které interaguje s parametry nasazení a výstupy.

json

json(arg1)

Převede platný řetězec JSON na datový typ JSON.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
arg1 Ano string Hodnota, která se má převést na JSON. Řetězec musí být správně naformátovaný řetězec JSON.

Vrácená hodnota

Datový typ JSON ze zadaného řetězce nebo prázdná hodnota, pokud je zadána hodnota null .

Poznámky

Pokud potřebujete do objektu JSON zahrnout hodnotu parametru nebo proměnnou, pomocí funkce concat vytvořte řetězec, který funkci předáte.

Příklad

Následující příklad ukazuje, jak používat json funkci. Všimněte si, že pro prázdný objekt můžete předat hodnotu null .

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, '"}'))

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
emptyObjectOutput Logická hodnota True
objectOutput Objekt {"a": "b"}
stringOutput String test
booleanOutput Logická hodnota True
intOutput Celé číslo 3
arrayOutput Pole [ 1, 2, 3 ]
concatObjectOutput Objekt { "a": "demo value" }

length

length(arg1)

Vrátí počet prvků v poli, znaky v řetězci nebo vlastnosti kořenové úrovně v objektu.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
arg1 Ano pole, řetězec nebo objekt Pole, které se má použít pro získání počtu prvků, řetězec, který se má použít pro získání počtu znaků, nebo objekt, který se má použít pro získání počtu vlastností kořenové úrovně.

Vrácená hodnota

Int.

Příklad

Následující příklad ukazuje, jak se používá length s polem a řetězcem:

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)

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
arrayLength Int 3
stringLength Int 13
objectLength Int 4

objectKeys

objectKeys(object)

Vrátí klíče z objektu, kde je objekt kolekcí párů klíč-hodnota.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
objekt Ano objekt Objekt, což je kolekce párů klíč-hodnota.

Vrácená hodnota

Pole.

Příklad

Následující příklad ukazuje, jak se používá objectKeys s objektem:

var obj = { a: 1, b: 2 }

output keyArray array = objectKeys(obj)

Výstup z předchozího příkladu je:

Name Typ Hodnota
keyArray Pole [ "a", "b" ]

keyArray vrátí seznam klíčů vstupního objektu.

Ve formátu JSON je objekt neuspořádanou kolekcí párů klíč/hodnota nula nebo více. Řazení se může lišit v závislosti na implementacích. Například funkce Bicep items() seřadí objekty v abecedním pořadí. Na jiných místech lze původní řazení zachovat. Kvůli tomuto ne determinismu nepoužívejte žádné předpoklady týkající se řazení klíčů objektů při psaní kódu, které interaguje s parametry nasazení a výstupy.

shallowMerge

shallowMerge(inputArray)

Kombinuje pole objektů, kde jsou sloučeny pouze objekty nejvyšší úrovně. To znamená, že pokud sloučené objekty obsahují vnořené objekty, tyto vnořené objekty nejsou hluboce sloučeny. Místo toho se nahradí zcela odpovídající vlastností z objektu sloučení.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
inputArray Ano pole Pole objektů.

Vrácená hodnota

Objekt.

Příklad

Následující příklad ukazuje, jak používat 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)

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
firstOutput objekt {"one":"a","two":"c"}
secondOutput objekt {"one":"a","vnořený":{"b":2},"two":"b"}

FirstOutput ukazuje vlastnosti z slučujících objektů jsou sloučeny do nového objektu. Pokud existují konfliktní vlastnosti (tj. vlastnosti se stejným názvem), má vlastnost z posledního sloučeného objektu obvykle přednost.

secondOutput ukazuje, že slučování mělkých objektů rekurzivně nesloučí tyto vnořené objekty. Místo toho se celý vnořený objekt nahradí odpovídající vlastností z objektu sloučení.

sjednocení

union(arg1, arg2, arg3, ...)

Vrátí jednu matici nebo objekt se všemi prvky z parametrů. U polí se duplicitní hodnoty zahrnou jednou. U objektů jsou duplicitní názvy vlastností zahrnuty pouze jednou.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
arg1 Ano pole nebo objekt První hodnota, která se má použít pro spojování prvků.
arg2 Ano pole nebo objekt Druhá hodnota, která se má použít pro spojování prvků.
další argumenty No pole nebo objekt Další hodnoty, které se mají použít pro spojování prvků.

Vrácená hodnota

Pole nebo objekt.

Poznámky

Funkce sjednocení používá posloupnost parametrů k určení pořadí a hodnot výsledku.

U polí funkce iteruje každý prvek v prvním parametru a přidá ji do výsledku, pokud ještě není k dispozici. Potom tento proces zopakuje pro druhý parametr a všechny ostatní parametry. Pokud je hodnota již přítomna, je dřívější umístění v poli zachováno.

Pro objekty se do výsledku přidají názvy vlastností a hodnoty z prvního parametru. Pro pozdější parametry se do výsledku přidají všechny nové názvy. Pokud má pozdější parametr vlastnost se stejným názvem, tato hodnota přepíše existující hodnotu. Pořadí vlastností není zaručeno.

Sjednocovací funkce slučuje nejen prvky nejvyšší úrovně, ale také rekurzivně slučuje všechny vnořené objekty v nich. Vnořené hodnoty pole nejsou sloučeny. Podívejte se na druhý příklad v následující části.

Příklad

Následující příklad ukazuje použití union s poli a objekty:

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)

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
objectOutput Objekt {"one": "a", "two": "b", "three": "c2", "four": "d", "five": "e"}
arrayOutput Pole ["one", "two", "three", "four"]

Následující příklad ukazuje možnosti hloubkového sloučení:

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)

Výstup z předchozího příkladu je:

Name Typ Hodnota
objectOutput Objekt {"property":{"one":"a","two":"b","three":"c2","four":"d","five":"e"},"nestedArray":[3;4]}
arrayOutput Pole [["one";"two"],["three"],["four";"two"]]

Pokud byly vnořené matice sloučeny, hodnota objectOutput.nestedArray by byla [1, 2, 3, 4] a hodnota arrayOutput by byla [["jedna", "two", "three"], ["three", "four", "two"]].

Další kroky