다음을 통해 공유


Bicep에 대한 개체 함수

이 문서에서는 개체 작업을 위한 Bicep 함수에 대해 설명합니다.

contains

contains(container, itemToFind)

배열에 값이 포함되는지, 개체에 키가 포함되는지 또는 문자열에 하위 문자열이 포함되는지를 확인합니다. 문자열 비교에서는 대/소문자를 구분합니다. 그러나 개체에 키가 포함되어 있는지를 테스트할 때는 비교에서 대/소문자를 구분하지 않습니다.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
컨테이너 배열, 개체 또는 문자열 찾을 값을 포함하는 값입니다.
itemToFind 문자열 또는 int 찾을 값입니다.

반환 값

항목이 있으면 True이고, 항목이 없으면 False입니다.

예시

다음 예제에서는 여러 다른 형식의 contains를 사용하는 방법을 보여 줍니다.

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

기본 값을 사용한 이전 예제의 출력은 다음과 같습니다.

이름 타입
stringTrue Bool True
stringFalse Bool False
objectTrue Bool True
objectFalse Bool False
arrayTrue Bool True
arrayFalse Bool False

empty

empty(itemToTest)

배열, 개체 또는 문자열이 비어 있는지 null인지 확인합니다.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
itemToTest 배열, 개체 또는 문자열 비어 있는지 null인지 확인할 값입니다.

반환 값

값이 비어 있거나 null이면 True를 반환하고, 그렇지 않으면 False를 반환합니다.

예시

다음 예제에서는 배열, 개체 및 문자열이 비어 있는지 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)

기본 값을 사용한 이전 예제의 출력은 다음과 같습니다.

이름 타입
arrayEmpty Bool True
objectEmpty Bool True
stringEmpty Bool True
stringNull Bool True

교집합

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

매개 변수에서 공통 요소를 갖는 단일 배열 또는 개체를 반환합니다.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
arg1 배열 또는 개체 공통 요소를 찾는 데 사용할 첫 번째 값입니다.
arg2 배열 또는 개체 공통 요소를 찾는 데 사용할 두 번째 값입니다.
추가 인수 아니요 배열 또는 개체 일반적인 요소를 찾는 데 사용할 더 많은 값입니다.

반환 값

공통 요소가 있는 배열 또는 개체입니다.

예시

다음 예제에서는 배열 및 개체에 intersection을 사용하는 방법을 보여 줍니다.

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)

기본 값을 사용한 이전 예제의 출력은 다음과 같습니다.

이름 타입
objectOutput Object {"one": "a", "three": "c"}
arrayOutput 배열 ["two", "three"]

항목

items(object)

사전 개체를 배열로 변환합니다. 배열을 개체로 변환하는 방법은 toObject를 참조하세요.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
개체 개체 배열로 변환할 사전 개체입니다.

반환 값

변환된 사전에 대한 개체의 배열입니다. 배열의 각 개체에는 사전의 키 값이 포함된 key 속성이 있습니다. 또한 각 개체에는 해당 개체의 속성이 포함된 value 속성이 있습니다.

예시

다음 예제에서는 사전 개체를 배열로 변환합니다. 배열의 각 개체에 대해 수정된 값으로 새 개체를 만듭니다.

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

이전 예제에서는 다음을 반환합니다.

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

다음 예제는 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

이 예제에서는 다음을 반환합니다.

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

JSON에서 개체는 0개 이상 키/값 쌍의 순서가 지정되지 않은 컬렉션입니다. 순서는 구현에 따라 다를 수 있습니다. 예를 들어 Bicep items() 함수는 개체를 알파벳 순서로 정렬합니다. 다른 위치에서는 원래 순서를 유지할 수 있습니다. 이러한 비결정성 때문에 배포 매개 변수 및 출력과 상호 작용하는 코드를 작성할 때는 개체 키의 순서를 가정하지 않아야 합니다.

json

json(arg1)

유효한 JSON 문자열을 JSON 데이터 형식으로 변환합니다.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
arg1 string JSON으로 변환할 값입니다. 문자열은 올바른 형식의 JSON 문자열이어야 합니다.

반환 값

지정된 문자열의 JSON 데이터 형식이거나, null을 지정한 경우 빈 개체입니다.

설명

JSON 개체에 매개 변수 값이나 변수를 포함해야 하는 경우 concat 함수를 사용하여 함수로 전달할 문자열을 작성합니다.

예시

다음 예제에서는 json 함수를 사용하는 방법을 보여 줍니다. 빈 개체에 대해 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, '"}'))

기본 값을 사용한 이전 예제의 출력은 다음과 같습니다.

이름 타입
emptyObjectOutput 부울 True
objectOutput Object {"a": "b"}
stringOutput 문자열 테스트
booleanOutput 부울 True
intOutput 정수 3
arrayOutput 배열 [ 1, 2, 3 ]
concatObjectOutput Object { "a": "demo value" }

length

length(arg1)

배열의 요소 수, 문자열의 문자 수 또는 개체의 루트 수준 속성 수를 반환합니다.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
arg1 배열, 문자열 또는 개체 요소의 수를 가져오는 데 사용할 배열, 문자 수를 가져오는 데 사용할 문자열 또는 루트 수준의 속성 수를 가져오려는 데 사용할 개체입니다.

반환 값

int입니다.

예시

다음 예제에서는 배열 및 문자열에 length를 사용하는 방법을 보여 줍니다.

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)

기본 값을 사용한 이전 예제의 출력은 다음과 같습니다.

이름 타입
arrayLength 정수 3
stringLength 정수 13
objectLength 정수 4

objectKeys

objectKeys(object)

개체가 키-값 쌍의 컬렉션인 개체에서 키를 반환합니다.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
개체 개체 키-값 쌍의 컬렉션인 개체입니다.

반환 값

배열입니다.

예시

다음 예제에서는 개체와 함께 objectKeys를 사용하는 방법을 보여줍니다.

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

output keyArray array = objectKeys(obj)

위 예제의 출력은 다음과 같습니다.

이름 타입
keyArray 배열 [ "a", "b" ]

keyArray는 입력 개체의 키 목록을 반환합니다.

JSON에서 개체는 0개 이상 키/값 쌍의 순서가 지정되지 않은 컬렉션입니다. 순서는 구현에 따라 다를 수 있습니다. 예를 들어 Bicep items() 함수는 개체를 알파벳 순서로 정렬합니다. 다른 위치에서는 원래 순서를 유지할 수 있습니다. 이러한 비결정성 때문에 배포 매개 변수 및 출력과 상호 작용하는 코드를 작성할 때는 개체 키의 순서를 가정하지 않아야 합니다.

shallowMerge

shallowMerge(inputArray)

최상위 개체만 병합되는 개체 배열을 결합합니다. 즉, 병합되는 개체에 중첩된 개체가 포함된 경우 중첩된 개체는 깊이 병합되지 않습니다. 대신 병합 개체의 해당 속성으로 완전히 대체됩니다.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
inputArray array 개체의 배열입니다.

반환 값

개체입니다.

예시

다음 예제에서는 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)

기본 값을 사용한 이전 예제의 출력은 다음과 같습니다.

이름 타입
firstOutput 개체 {"one":"a","two":"c"}
secondOutput 개체 {"one":"a","nested":{"b":2},"two":"b"}

firstOutput은 병합 개체의 속성이 새 개체로 결합하였음을 보여줍니다. 충돌하는 속성(즉, 이름이 같은 속성)이 있는 경우 병합되는 마지막 개체의 속성이 일반적으로 우선합니다.

secondOutput은 단순 병합이 이러한 중첩된 개체를 재귀적으로 병합하지 않음을 보여 줍니다. 대신 전체 중첩된 개체가 병합 개체의 해당 속성으로 대체됩니다.

union

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

매개 변수의 모든 요소를 포함하는 단일 배열 또는 개체를 반환합니다. 배열의 경우 중복 값이 한 번 포함됩니다. 개체의 경우 중복 속성 이름은 한 번만 포함됩니다.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
arg1 배열 또는 개체 요소를 조인하는 데 사용할 첫 번째 값입니다.
arg2 배열 또는 개체 요소를 조인하는 데 사용할 두 번째 값입니다.
추가 인수 아니요 배열 또는 개체 요소를 조인하는 데 사용할 더 많은 값입니다.

반환 값

배열 또는 개체입니다.

설명

union 함수는 매개 변수의 시퀀스를 사용하여 결과의 순서와 값을 결정합니다.

배열의 경우 함수는 첫 번째 매개 변수의 각 요소를 반복하고 아직 존재하지 않는 경우 결과에 추가합니다. 그런 다음, 두 번째 매개 변수와 다른 매개 변수에 대해 프로세스를 반복합니다. 값이 이미 있는 경우 배열의 이전 배치가 유지됩니다.

개체의 경우 첫 번째 매개 변수의 속성 이름과 값이 결과에 추가됩니다. 후자 매개 변수의 경우 결과에 새 이름이 추가됩니다. 후자 매개 변수에 동일한 이름의 속성이 있는 경우 해당 값은 기존 값을 덮어씁니다. 속성의 순서가 보장되지 않습니다.

Union 함수는 최상위 요소뿐만 아니라 해당 요소 내의 중첩된 개체를 재귀적으로 병합합니다. 중첩된 배열 값은 병합되지 않습니다. 다음 섹션의 두 번째 예제를 참조하세요.

예시

다음 예제에서는 배열 및 개체에 union을 사용하는 방법을 보여 줍니다.

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)

기본 값을 사용한 이전 예제의 출력은 다음과 같습니다.

이름 타입
objectOutput Object {"one": "a", "two": "b", "three": "c2", "four": "d", "five": "e"}
arrayOutput 배열 ["one", "two", "three", "four"]

다음 예제에서는 딥 병합 기능을 보여 줍니다.

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)

위 예제의 출력은 다음과 같습니다.

이름 타입
objectOutput Object {"property":{"one":"a","two":"b","three":"c2","four":"d","five":"e"},"nestedArray":[3,4]}
arrayOutput 배열 [["one","two"],["three"],["four","two"]]

중첩된 배열이 병합된 경우 objectOutput.nestedArray 값은 [1, 2, 3, 4]이고 arrayOutput 값은 [["one", "two", "three"], ["three", "four", "two"]]입니다.

다음 단계