Funções de objeto para Bicep

Este artigo descreve as funções do Bíceps para trabalhar com objetos.

contém

contains(container, itemToFind)

Verifica se uma matriz contém um valor, um objeto contém uma chave ou uma cadeia de caracteres contém uma substring. A comparação de cadeia de caracteres diferencia maiúsculas de minúsculas. No entanto, ao testar se um objeto contém uma chave, a comparação não diferencia maiúsculas de minúsculas.

Espaço de nome: sys.

Parâmetros

Parâmetro Obrigatório Type Description
contentor Sim matriz, objeto ou cadeia de caracteres O valor que contém o valor a ser localizado.
itemToFind Sim string ou int O valor a ser encontrado.

Valor devolvido

True se o item for encontrado, caso contrário, False.

Exemplo

O exemplo a seguir mostra como usar contém com diferentes tipos:

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

A saída do exemplo anterior com os valores padrão é:

Nome Tipo valor
stringTrue Bool True
stringFalse Bool False
objectTrue Bool True
objectFalse Bool False
arrayTrue Bool True
arrayFalse Bool False

empty

empty(itemToTest)

Determina se uma matriz, objeto ou cadeia de caracteres está vazia.

Espaço de nome: sys.

Parâmetros

Parâmetro Obrigatório Type Description
itemToTest Sim matriz, objeto ou cadeia de caracteres O valor para verificar se está vazio.

Valor devolvido

Retorna True se o valor estiver vazio, caso contrário, False.

Exemplo

O exemplo a seguir verifica se uma matriz, objeto e cadeia de caracteres estão vazios.

param testArray array = []
param testObject object = {}
param testString string = ''

output arrayEmpty bool = empty(testArray)
output objectEmpty bool = empty(testObject)
output stringEmpty bool = empty(testString)

A saída do exemplo anterior com os valores padrão é:

Nome Tipo valor
arrayVazio Bool True
objectEmpty Bool True
stringEmpty Bool True

intersecção

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

Retorna uma única matriz ou objeto com os elementos comuns dos parâmetros.

Espaço de nome: sys.

Parâmetros

Parâmetro Obrigatório Type Description
Arg1 Sim matriz ou objeto O primeiro valor a ser usado para localizar elementos comuns.
Arg2 Sim matriz ou objeto O segundo valor a ser usado para localizar elementos comuns.
Argumentos adicionais Não matriz ou objeto Valores adicionais a serem usados para encontrar elementos comuns.

Valor devolvido

Uma matriz ou objeto com os elementos comuns.

Exemplo

O exemplo a seguir mostra como usar a interseção com matrizes e objetos:

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)

A saída do exemplo anterior com os valores padrão é:

Nome Tipo valor
objectOutput Object {"um": "a", "três": "c"}
arrayOutput Matriz ["dois", "três"]

itens

items(object)

Converte um objeto de dicionário em uma matriz. Consulte toObject sobre como converter uma matriz em um objeto.

Espaço de nome: sys.

Parâmetros

Parâmetro Obrigatório Type Description
objeto Sim objeto O objeto de dicionário a ser convertido em uma matriz.

Valor devolvido

Uma matriz de objetos para o dicionário convertido. Cada objeto na matriz tem uma key propriedade que contém o valor da chave para o dicionário. Cada objeto também tem uma value propriedade que contém as propriedades para o objeto.

Exemplo

O exemplo a seguir converte um objeto de dicionário em uma matriz. Para cada objeto na matriz, ele cria um novo objeto com valores modificados.

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

O exemplo anterior retorna:

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

O exemplo a seguir mostra a matriz que é retornada da função 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

O exemplo retorna:

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

Em JSON, um objeto é uma coleção não ordenada de zero ou mais pares chave/valor. A ordenação pode ser diferente dependendo das implementações. Por exemplo, a função Bicep items() classifica os objetos na ordem alfabética. Em outros lugares, o pedido original pode ser preservado. Devido a esse não-determinismo, evite fazer suposições sobre a ordenação de chaves de objeto ao escrever código, que interage com parâmetros de implantação e saídas.

json

json(arg1)

Converte uma cadeia de caracteres JSON válida em um tipo de dados JSON.

Espaço de nome: sys.

Parâmetros

Parâmetro Obrigatório Type Description
Arg1 Sim string O valor a ser convertido em JSON. A cadeia de caracteres deve ser uma cadeia de caracteres JSON formatada corretamente.

Valor devolvido

O tipo de dados JSON da cadeia de caracteres especificada ou um valor vazio quando null é especificado.

Observações

Se você precisar incluir um valor de parâmetro ou variável no objeto JSON, use a função concat para criar a cadeia de caracteres que você passa para a função.

Exemplo

O exemplo a seguir mostra como usar a função json. Observe que você pode passar em null para um objeto vazio.

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

A saída do exemplo anterior com os valores padrão é:

Nome Tipo valor
emptyObjectOutput Boolean True
objectOutput Object {"a": "b"}
stringOutput String test
booleanOutput Boolean True
intOutput Número inteiro 3
arrayOutput Matriz [ 1, 2, 3 ]
concatObjectOutput Object { "a": "valor de demonstração" }

length

length(arg1)

Retorna o número de elementos em uma matriz, caracteres em uma cadeia de caracteres ou propriedades de nível raiz em um objeto.

Espaço de nome: sys.

Parâmetros

Parâmetro Obrigatório Type Description
Arg1 Sim matriz, cadeia de caracteres ou objeto A matriz a ser usada para obter o número de elementos, a cadeia de caracteres a ser usada para obter o número de caracteres ou o objeto a ser usado para obter o número de propriedades de nível raiz.

Valor devolvido

Um int.

Exemplo

O exemplo a seguir mostra como usar o comprimento com uma matriz e uma cadeia de caracteres:

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)

A saída do exemplo anterior com os valores padrão é:

Nome Tipo valor
arrayLength Int 3
stringLength Int 13
objectLength Int 4

união

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

Retorna uma única matriz ou objeto com todos os elementos dos parâmetros. Para matrizes, valores duplicados são incluídos uma vez. Para objetos, nomes de propriedade duplicados são incluídos apenas uma vez.

Espaço de nome: sys.

Parâmetros

Parâmetro Obrigatório Type Description
Arg1 Sim matriz ou objeto O primeiro valor a ser usado para unir elementos.
Arg2 Sim matriz ou objeto O segundo valor a ser usado para unir elementos.
Argumentos adicionais Não matriz ou objeto Valores adicionais a serem usados para unir elementos.

Valor devolvido

Uma matriz ou objeto.

Observações

A função união usa a sequência dos parâmetros para determinar a ordem e os valores do resultado.

Para matrizes, a função itera através de cada elemento no primeiro parâmetro e adiciona-o ao resultado se ainda não estiver presente. Em seguida, ele repete o processo para o segundo parâmetro e quaisquer parâmetros adicionais. Se um valor já estiver presente, o posicionamento anterior na matriz será preservado.

Para objetos, nomes de propriedade e valores do primeiro parâmetro são adicionados ao resultado. Para parâmetros posteriores, quaisquer novos nomes são adicionados ao resultado. Se um parâmetro posterior tiver uma propriedade com o mesmo nome, esse valor substituirá o valor existente. A ordem das propriedades não é garantida.

A função união mescla não apenas os elementos de nível superior, mas também mescla recursivamente quaisquer objetos aninhados dentro deles. Os valores de matriz aninhada não são mesclados. Veja o segundo exemplo na seção a seguir.

Exemplo

O exemplo a seguir mostra como usar a união com matrizes e objetos:

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)

A saída do exemplo anterior com os valores padrão é:

Nome Tipo valor
objectOutput Object {"um": "a", "dois": "b", "três": "c2", "quatro": "d", "cinco": "e"}
arrayOutput Matriz ["um", "dois", "três", "quatro"]

O exemplo a seguir mostra a capacidade de mesclagem profunda:

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)

A saída do exemplo anterior é:

Nome Tipo valor
objectOutput Object {"propriedade":{"um":"a","dois":"b","três":"c2","quatro":"d","cinco":"e"},"nestedArray":[3,4]}
arrayOutput Matriz [["um","dois"],["três"],["quatro","dois"]]

Se matrizes aninhadas fossem mescladas, o valor de objectOutput.nestedArray seria [1, 2, 3, 4] e o valor de arrayOutput seria [["um", "dois", "três"], ["três", "quatro", "dois"]].

Próximos passos