Функции для работы с массивами в Bicep
В этой статье описываются функции Bicep для работы с массивами. Лямбда-функции для работы с массивами можно найти здесь.
array
array(convertToArray)
Преобразует значение в массив.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
convertToArray | Да | целое число, строка, массив или объект | Значение, которое необходимо преобразовать в массив. |
Возвращаемое значение
Массив объектов .
Пример
В следующем примере показано, как использовать функцию array с различными типами:
param intToConvert int = 1
param stringToConvert string = 'efgh'
param objectToConvert object = {
a: 'b'
c: 'd'
}
output intOutput array = array(intToConvert)
output stringOutput array = array(stringToConvert)
output objectOutput array = array(objectToConvert)
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
intOutput | Массив | [1] |
stringOutput | Массив | ["efgh"] |
objectOutput | Массив | [{"a": "b", "c": "d"}] |
concat
concat(arg1, arg2, arg3, ...)
Объединяет несколько массивов и возвращает результирующий массив. Дополнительные сведения об объединении нескольких строк см . в сцепении.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arg1 | Да | array | Первый массив для сцепки. |
дополнительные аргументы | No | array | Дополнительные массивы в последовательном порядке для сцепки. |
Эта функция принимает любое число массивов и объединяет их.
Возвращаемое значение
Массив объединенных значений.
Пример
В следующем примере показано, как объединить два массива.
param firstArray array = [
'1-1'
'1-2'
'1-3'
]
param secondArray array = [
'2-1'
'2-2'
'2-3'
]
output return array = concat(firstArray, secondArray)
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
Ввод | Массив | ["1-1", "1-2", "1-3", "2-1", "2-2", "2-3"] |
содержит
contains(container, itemToFind)
Проверяет, содержит ли массив значение, содержит ли объект ключ или содержит ли строка подстроку. При сравнении строк учитывается регистр. Тем не менее при проверке объекта на наличие ключа сравнение выполняется без учета регистра.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
контейнер | Да | массив, объект или строка | Значение, содержащее значение, которое необходимо найти. |
itemToFind | Да | строка или целое число | Значение, которое необходимо найти. |
Возвращаемое значение
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 | Истина |
stringFalse | Bool | False |
objectTrue | Bool | Истина |
objectFalse | Bool | False |
arrayTrue | Bool | Истина |
arrayFalse | Bool | False |
empty
empty(itemToTest)
Определяет, является ли массив, объект или строка пустым или пустым.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
itemToTest | Да | массив, объект или строка | Значение, которое необходимо проверить, является ли он пустым или null. |
Возвращаемое значение
Возвращает значение True , если значение пустое или null; в противном случае — false.
Пример
В следующем примере проверяется, являются ли пустыми массив, объект и строка.
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 | Истина |
objectEmpty | Bool | Истина |
stringEmpty | Bool | Истина |
stringNull | Bool | Истина |
Примеры краткого руководства
Следующий пример извлекается из шаблона быстрого запуска, виртуальная сеть с параметрами журналов диагностики:
@description('Array containing DNS Servers')
param dnsServers array = []
...
resource vnet 'Microsoft.Network/virtualNetworks@2023-11-01' = {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: vnetAddressSpace
}
dhcpOptions: empty(dnsServers) ? null : {
dnsServers: dnsServers
}
...
}
}
В условном выражении пустая функция используется для проверки того, является ли массив dnsServers пустым массивом.
первая
first(arg1)
Возвращает первый элемент массива или первый знак строки.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arg1 | Да | массив или строка | Значение, из которого необходимо извлечь первый элемент или знак. |
Возвращаемое значение
Тип (строка, целое число, массив или объект) первого элемента в массиве или строка первого знака.
Пример
В следующем примере показано, как использовать функцию first с массивом и строкой:
param arrayToTest array = [
'one'
'two'
'three'
]
output arrayOutput string = first(arrayToTest)
output stringOutput string = first('One Two Three')
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
arrayOutput | Строка | один |
stringOutput | Строка | O |
flatten
flatten(arrayToFlatten)
Принимает массив массивов и возвращает массив вложенных элементов в исходном порядке. Субаррейы только раз сплощены, а не рекурсивно.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arrayToFlattern | Да | array | Массив субаррей для выравнивания. |
Возвращаемое значение
Массив
Пример
В следующем примере показано, как использовать функцию с плоской.
param arrayToTest array = [
['one', 'two']
['three']
['four', 'five']
]
output arrayOutput array = flatten(arrayToTest)
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
arrayOutput | array | ['one', 'two', 'three', 'four', 'five'] |
indexOf
indexOf(arrayToSearch, itemToFind)
Возвращает целое число для индекса первого вхождения элемента в массиве. При сравнении строк учитывается регистр.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arrayToSearch | Да | array | Массив, используемый для поиска индекса искомого элемента. |
itemToFind | Да | целое число, строка, массив или объект | Элемент, который нужно найти в массиве. |
Возвращаемое значение
Целое число, представляющее первый индекс у элемента в массиве. Значения индекса начинаются с нуля. Если элемент не найден, то возвращается значение –1.
Примеры
В следующем примере показано, как использовать функции indexOf и lastIndexOf:
var names = [
'one'
'two'
'three'
]
var numbers = [
4
5
6
]
var collection = [
names
numbers
]
var duplicates = [
1
2
3
1
]
output index1 int = lastIndexOf(names, 'two')
output index2 int = indexOf(names, 'one')
output notFoundIndex1 int = lastIndexOf(names, 'Three')
output index3 int = lastIndexOf(numbers, 4)
output index4 int = indexOf(numbers, 6)
output notFoundIndex2 int = lastIndexOf(numbers, '5')
output index5 int = indexOf(collection, numbers)
output index6 int = indexOf(duplicates, 1)
output index7 int = lastIndexOf(duplicates, 1)
Выходные данные из предыдущего примера:
Имя. | Тип | значение |
---|---|---|
index1 | INT | 1 |
index2 | INT | 0 |
index3 | INT | 0 |
index4 | INT | 2 |
index5 | INT | 1 |
index6 | INT | 0 |
index7 | INT | 3 |
notFoundIndex1 | INT | -1 |
notFoundIndex2 | INT | -1 |
intersection
intersection(arg1, arg2, arg3, ...)
Возвращает из параметров один массив или объект с общими элементами.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arg1 | Да | массив или объект | Первое значение для поиска общих элементов. |
arg2 | Да | массив или объект | Второе значение для поиска общих элементов. |
дополнительные аргументы | No | массив или объект | Дополнительные значения для поиска общих элементов. |
Возвращаемое значение
Массив или объект с общими элементами. Порядок элементов определяется первым параметром массива.
Пример
В следующем примере показано, как использовать функцию 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"] |
Порядок пересекающихся элементов определяется первым параметром массива. В следующем примере показано определение порядка возвращаемых элементов в зависимости от первого массива.
var array1 = [
1
2
3
4
]
var array2 = [
3
2
1
]
var array3 = [
4
1
3
2
]
output commonUp array = intersection(array1, array2, array3)
output commonDown array = intersection(array2, array3, array1)
Выходные данные из предыдущего примера:
Имя. | Тип | значение |
---|---|---|
commonUp | array | [1, 2, 3] |
commonDown | array | [3, 2, 1] |
последняя
last(arg1)
Возвращает последний элемент массива или последний знак строки.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arg1 | Да | массив или строка | Значение, из которого необходимо извлечь последний элемент или знак. |
Возвращаемое значение
Тип (строка, целое число, массив или объект) последнего элемента в массиве или последнего символа в строке.
Пример
В следующем примере показано, как использовать функцию last с массивом и строкой:
param arrayToTest array = [
'one'
'two'
'three'
]
output arrayOutput string = last(arrayToTest)
output stringOutput string = last('One Two three')
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
arrayOutput | Строка | три |
stringOutput | Строка | e |
lastIndexOf
lastIndexOf(arrayToSearch, itemToFind)
Возвращает целое число для индекса последнего вхождения элемента в массиве. При сравнении строк учитывается регистр.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arrayToSearch | Да | array | Массив, используемый для поиска индекса искомого элемента. |
itemToFind | Да | целое число, строка, массив или объект | Элемент, который нужно найти в массиве. |
Возвращаемое значение
Целое число, представляющее последний индекс у элемента в массиве. Значения индекса начинаются с нуля. Если элемент не найден, то возвращается значение –1.
Примеры
В следующем примере показано, как использовать функции indexOf и lastIndexOf:
var names = [
'one'
'two'
'three'
]
var numbers = [
4
5
6
]
var collection = [
names
numbers
]
var duplicates = [
1
2
3
1
]
output index1 int = lastIndexOf(names, 'two')
output index2 int = indexOf(names, 'one')
output notFoundIndex1 int = lastIndexOf(names, 'Three')
output index3 int = lastIndexOf(numbers, 4)
output index4 int = indexOf(numbers, 6)
output notFoundIndex2 int = lastIndexOf(numbers, '5')
output index5 int = indexOf(collection, numbers)
output index6 int = indexOf(duplicates, 1)
output index7 int = lastIndexOf(duplicates, 1)
Выходные данные из предыдущего примера:
Имя. | Тип | значение |
---|---|---|
index1 | INT | 1 |
index2 | INT | 0 |
index3 | INT | 0 |
index4 | INT | 2 |
index5 | INT | 1 |
index6 | INT | 0 |
index7 | INT | 3 |
notFoundIndex1 | INT | -1 |
notFoundIndex2 | INT | -1 |
length
length(arg1)
Возвращает количество элементов в массиве, символов в строке или свойств корневого уровня в объекте.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arg1 | Да | массив, строка или объект | Массив, используемый для получения числа элементов, строка, используемая для получения числа символов, или объект, используемый для получения числа свойств корневого уровня. |
Возвращаемое значение
Целое число.
Пример
В следующем примере показано, как использовать функцию 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 | Int | 3 |
stringLength | Int | 13 |
objectLength | Int | 4 |
Примеры краткого руководства
Следующий пример извлекается из шаблона быстрого запуска, развертывание Управление API во внешней виртуальной сети с общедоступным IP-адресом:
@description('Numbers for availability zones, for example, 1,2,3.')
param availabilityZones array = [
'1'
'2'
]
resource exampleApim 'Microsoft.ApiManagement/service@2023-05-01-preview' = {
name: apiManagementName
location: location
sku: {
name: sku
capacity: skuCount
}
zones: ((length(availabilityZones) == 0) ? null : availabilityZones)
...
}
В условном выраженииlength
функция проверяет длину массива availabilityZones.
Дополнительные примеры можно найти в следующих файлах Bicep краткого руководства.
- Резервное копирование виртуальных машин Resource Manager с помощью хранилища служб восстановления
- Развертывание Управление API в Зоны доступности
- Создание брандмауэра и брандмауэра с помощью правил и ipgroups
- Создание установки песочницы Брандмауэр Azure с помощью зон
макс.
max(arg1)
Возвращает максимальное значение из массива целых чисел или разделенный запятыми список целых чисел.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arg1 | Да | массив целых чисел или разделенный запятыми список целых чисел | Коллекция, для которой необходимо получить максимальное значение. |
Возвращаемое значение
Целое число, представляющее максимальное значение.
Пример
В следующем примере показано, как использовать функцию max с массивом и списком целых чисел:
param arrayToTest array = [
0
3
2
5
4
]
output arrayOutput int = max(arrayToTest)
output intOutput int = max(0,3,2,5,4)
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
arrayOutput | Int | 5 |
intOutput | Int | 5 |
мин
min(arg1)
Возвращает минимальное значение из массива целых чисел или разделенный запятыми список целых чисел.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arg1 | Да | массив целых чисел или разделенный запятыми список целых чисел | Коллекция, для которой необходимо получить минимальное значение. |
Возвращаемое значение
Целое число, представляющее минимальное значение.
Пример
В следующем примере показано, как использовать функцию min с массивом и списком целых чисел:
param arrayToTest array = [
0
3
2
5
4
]
output arrayOutput int = min(arrayToTest)
output intOutput int = min(0,3,2,5,4)
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
arrayOutput | Int | 0 |
intOutput | Int | 0 |
range
range(startIndex, count)
Создает массив целых чисел, используя начальное целое число и количество элементов.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
startIndex | Да | INT | Первое целое число в массиве. Сумма значений startIndex и count не должна превышать 2147483647. |
count | Да | INT | Количество целых чисел в массиве. Значение должно быть неотрицательным целым числом не больше 10000. |
Возвращаемое значение
Массив целых чисел.
Пример
В следующем примере показано, как использовать функцию range:
param startingInt int = 5
param numberOfElements int = 3
output rangeOutput array = range(startingInt, numberOfElements)
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
rangeOutput | Массив | [5, 6, 7] |
Примеры краткого руководства
Следующий пример извлекается из шаблона быстрого запуска: две виртуальные машины в виртуальной сети — внутренние правила балансировки нагрузки и подсистемы балансировки нагрузки:
...
var numberOfInstances = 2
resource networkInterface 'Microsoft.Network/networkInterfaces@2023-11-01' = [for i in range(0, numberOfInstances): {
name: '${networkInterfaceName}${i}'
location: location
properties: {
...
}
}]
resource vm 'Microsoft.Compute/virtualMachines@2024-03-01' = [for i in range(0, numberOfInstances): {
name: '${vmNamePrefix}${i}'
location: location
properties: {
...
}
}]
Файл Bicep создает два ресурса networkInterface и два виртуальныхMachine.
Дополнительные примеры можно найти в следующих файлах Bicep краткого руководства.
- Шаблон нескольких виртуальных машин с управляемым диском
- Создание виртуальной машины с несколькими пустыми дисками данных StandardSSD_LRS
- Создание брандмауэра и брандмауэра с помощью правил и ipgroups
- Создание Брандмауэр Azure с помощью IpGroups
- Создание установки песочницы Брандмауэр Azure с помощью зон
- Создание Брандмауэр Azure с несколькими общедоступными IP-адресами
- Создание стандартной подсистемы балансировки нагрузки
- Пример Диспетчер трафика Azure виртуальной машины
- Создание службы автоматизации безопасности для определенных оповещений
- Виртуальная машина SQL Server с параметрами оптимизированного для производительности хранилища
- Создание учетной записи хранения с несколькими контейнерами BLOB-объектов
- Создание учетной записи хранения с несколькими общими папками
skip
skip(originalValue, numberToSkip)
Возвращает массив, содержащий все элементы из исходного массива, начиная с заданной позиции в массиве, или строку, содержащую все знаки из исходной строки, начиная с заданной позиции в строке.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
originalValue | Да | массив или строка | Массив или строка, используемые для пропуска. |
numberToSkip | Да | INT | Число элементов или знаков, которые необходимо пропустить. Если это значение меньше или равно 0, то возвращаются все элементы или знаки в значении. Если это значение превышает длину массива или строки, возвращается пустой массив или строка. |
Возвращаемое значение
Массив или строка.
Пример
В следующем примере пропускается заданное число элементов в массиве и заданное число знаков в строке.
param testArray array = [
'one'
'two'
'three'
]
param elementsToSkip int = 2
param testString string = 'one two three'
param charactersToSkip int = 4
output arrayOutput array = skip(testArray, elementsToSkip)
output stringOutput string = skip(testString, charactersToSkip)
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
arrayOutput | Массив | ["three"] |
stringOutput | Строка | two three |
take
take(originalValue, numberToTake)
Возвращает массив, содержащий указанное число элементов, считая от начала массива, или строку, содержащую указанное число знаков, считая от начала строки.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
originalValue | Да | массив или строка | Массив или строка, из которых берутся элементы. |
numberToTake | Да | INT | Число элементов или знаков, которые необходимо взять. Если это значение меньше или равно 0, то возвращается пустой массив или строка. Если это значение превышает длину заданного массива или строки, возвращаются все элементы в массиве или строке. |
Возвращаемое значение
Массив или строка.
Пример
В следующем примере из массива извлекается заданное число элементов, а из строки — заданное число знаков.
param testArray array = [
'one'
'two'
'three'
]
param elementsToTake int = 2
param testString string = 'one two three'
param charactersToTake int = 2
output arrayOutput array = take(testArray, elementsToTake)
output stringOutput string = take(testString, charactersToTake)
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
arrayOutput | Массив | ["one", "two"] |
stringOutput | Строка | on |
union
union(arg1, arg2, arg3, ...)
Возвращает из параметров один массив или объект со всеми элементами. Для массивов повторяющиеся значения включаются только один раз. Для объектов повторяющиеся имена свойств включаются только один раз.
Пространство имен: sys.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arg1 | Да | массив или объект | Первое значение для объединения элементов. |
arg2 | Да | массив или объект | Второе значение для объединения элементов. |
дополнительные аргументы | No | массив или объект | Дополнительные значения для объединения элементов. |
Возвращаемое значение
Массив или объект.
Замечания
Функция объединения использует последовательность параметров, чтобы определить порядок и значения в результате.
Для массивов эта функция итеративно просматривает каждый элемент в первом параметре и добавляет в результат те из них, которые в нем еще не присутствуют. Затем она повторяет этот процесс для второго и последующих параметров. Если значение уже включено в результат, сохраняется его прежнее расположение в массиве.
При просмотре объектов к результату добавляются имена и значения свойств из первого параметра. Для последующих параметров к результату добавляются новые имена свойств, если они есть. Если в последующем параметре есть свойство с именем, которое уже встречалось ранее, его значение перезаписывается поверх прежнего. Порядок свойств не гарантируется.
Функция объединения объединяет не только элементы верхнего уровня, но и рекурсивно объединяет все вложенные объекты внутри них. Вложенные значения массива не объединяются. См. второй пример в следующем разделе.
Пример
В следующем примере показано, как использовать функцию 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","пять":"e"},"nestedArray":[3,4]} |
arrayOutput | Массив | [["один","два"],["три"],["четыре","два"]] |
Если вложенные массивы были объединены, значение objectOutput.nestedArray будет равно [1, 2, 3, 4], а значение arrayOutput будет [["один", "два", "три"], ["три", "четыре", "два"]].
Следующие шаги
- Чтобы получить массив строковых значений, разделенных определенным значением, используйте split.