Поделиться через


Функции массивов для шаблонов ARM

В этой статье описываются функции шаблонов для работы с массивами.

Чтобы получить массив строковых значений, разделенных определенным значением, используйте split.

Совет

Мы рекомендуем использовать Bicep, так как он предоставляет те же возможности, что и шаблоны ARM, и имеет более простой синтаксис. Дополнительные сведения см. в описании функций массивов.

array

array(convertToArray)

Преобразует значение в массив.

В Bicep используйте функцию array.

Параметры

Параметр Обязательное поле Type Описание
convertToArray Да целое число, строка, массив или объект Значение, которое необходимо преобразовать в массив.

Возвращаемое значение

Массив объектов .

Пример

В следующем примере показано, как использовать функцию array с различными типами:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "intToConvert": {
      "type": "int",
      "defaultValue": 1
    },
    "stringToConvert": {
      "type": "string",
      "defaultValue": "efgh"
    },
    "objectToConvert": {
      "type": "object",
      "defaultValue": {
        "a": "b",
        "c": "d"
      }
    }
  },
  "resources": [
  ],
  "outputs": {
    "intOutput": {
      "type": "array",
      "value": "[array(parameters('intToConvert'))]"
    },
    "stringOutput": {
      "type": "array",
      "value": "[array(parameters('stringToConvert'))]"
    },
    "objectOutput": {
      "type": "array",
      "value": "[array(parameters('objectToConvert'))]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
intOutput Массив [1]
stringOutput Массив ["efgh"]
objectOutput Массив [{"a": "b", "c": "d"}]

concat

concat(arg1, arg2, arg3, ...)

Объединяет несколько массивов и возвращает объединенный массив или объединяет несколько строковых значений и возвращает объединенную строку.

В Bicep используйте функцию concat.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да массив или строка Первый массив или строка для объединения.
дополнительные аргументы No массив или строка Дополнительные массивы или строки в последовательном порядке для объединения.

Эта функция может принимать любое количество аргументов, а также строки или массивы параметров. Однако вы не можете указать для параметров и массивы, и строки. Массивы объединяются только с другими массивами.

Возвращаемое значение

Строка или массив объединенных значений.

Пример

В следующем примере показано, как объединить два массива.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstArray": {
      "type": "array",
      "defaultValue": [
        "1-1",
        "1-2",
        "1-3"
      ]
    },
    "secondArray": {
      "type": "array",
      "defaultValue": [
        "2-1",
        "2-2",
        "2-3"
      ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "return": {
      "type": "array",
      "value": "[concat(parameters('firstArray'), parameters('secondArray'))]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
Ввод Массив ["1-1", "1-2", "1-3", "2-1", "2-2", "2-3"]

В следующем примере показано, как объединить два строковых значения и получить объединенную строку.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "prefix": {
      "type": "string",
      "defaultValue": "prefix"
    }
  },
  "resources": [],
  "outputs": {
    "concatOutput": {
      "type": "string",
      "value": "[concat(parameters('prefix'), '-', uniqueString(resourceGroup().id))]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
concatOutput Строка prefix-5yj4yjf5mbg72

содержит

contains(container, itemToFind)

Проверяет, содержит ли массив значение, содержит ли объект ключ или содержит ли строка подстроку. При сравнении строк учитывается регистр. Тем не менее при проверке объекта на наличие ключа сравнение выполняется без учета регистра.

В Bicep используйте функцию contains.

Параметры

Параметр Обязательное поле Type Описание
контейнер Да массив, объект или строка Значение, содержащее значение, которое необходимо найти.
itemToFind Да строка или целое число Значение, которое необходимо найти.

Возвращаемое значение

True, если элемент найден. В противном случае — False.

Пример

В следующем примере показано, как использовать функцию contains с различными типами:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "stringToTest": {
      "type": "string",
      "defaultValue": "OneTwoThree"
    },
    "objectToTest": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b",
        "three": "c"
      }
    },
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "stringTrue": {
      "type": "bool",
      "value": "[contains(parameters('stringToTest'), 'e')]"
    },
    "stringFalse": {
      "type": "bool",
      "value": "[contains(parameters('stringToTest'), 'z')]"
    },
    "objectTrue": {
      "type": "bool",
      "value": "[contains(parameters('objectToTest'), 'one')]"
    },
    "objectFalse": {
      "type": "bool",
      "value": "[contains(parameters('objectToTest'), 'a')]"
    },
    "arrayTrue": {
      "type": "bool",
      "value": "[contains(parameters('arrayToTest'), 'three')]"
    },
    "arrayFalse": {
      "type": "bool",
      "value": "[contains(parameters('arrayToTest'), 'four')]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
stringTrue Bool Истина
stringFalse Bool False
objectTrue Bool Истина
objectFalse Bool False
arrayTrue Bool Истина
arrayFalse Bool False

createArray

createArray(arg1, arg2, arg3, ...)

Создает массив из параметров.

Функция createArray не поддерживается в Bicep. Сведения о создании массива см. в разделе о типе данных Bicep array.

Параметры

Параметр Обязательное поле Type Описание
args No Строка, целое число, массив или объект Значения в массиве.

Возвращаемое значение

Массив объектов . Если параметры не указаны, возвращается пустой массив.

Пример

В следующем примере показано, как использовать функцию createArray с различными типами:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "objectToTest": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b",
        "three": "c"
      }
    },
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "stringArray": {
      "type": "array",
      "value": "[createArray('a', 'b', 'c')]"
    },
    "intArray": {
      "type": "array",
      "value": "[createArray(1, 2, 3)]"
    },
    "objectArray": {
      "type": "array",
      "value": "[createArray(parameters('objectToTest'))]"
    },
    "arrayArray": {
      "type": "array",
      "value": "[createArray(parameters('arrayToTest'))]"
    },
    "emptyArray": {
      "type": "array",
      "value": "[createArray()]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
stringArray Массив ["a", "b", "c"]
intArray Массив [1, 2, 3]
objectArray Массив [{"one": "a", "two": "b", "three": "c"}]
arrayArray Массив [["one", "two", "three"]]
emptyArray Массив []

empty

empty(itemToTest)

Определяет, являются ли пустыми массив, объект или строка.

В Bicep используйте функцию empty.

Параметры

Параметр Обязательное поле Type Описание
itemToTest Да массив, объект или строка Значение, которое необходимо проверить на наличие содержимого.

Возвращаемое значение

Возвращает результат True, если значение пустое. В противном случае — False.

Пример

В следующем примере проверяется, являются ли пустыми массив, объект и строка.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "testArray": {
      "type": "array",
      "defaultValue": []
    },
    "testObject": {
      "type": "object",
      "defaultValue": {}
    },
    "testString": {
      "type": "string",
      "defaultValue": ""
    }
  },
  "resources": [
  ],
  "outputs": {
    "arrayEmpty": {
      "type": "bool",
      "value": "[empty(parameters('testArray'))]"
    },
    "objectEmpty": {
      "type": "bool",
      "value": "[empty(parameters('testObject'))]"
    },
    "stringEmpty": {
      "type": "bool",
      "value": "[empty(parameters('testString'))]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayEmpty Bool Истина
objectEmpty Bool Истина
stringEmpty Bool Истина

первая

first(arg1)

Возвращает первый элемент массива или первый знак строки.

В Bicep используйте функцию first.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да массив или строка Значение, из которого необходимо извлечь первый элемент или знак.

Возвращаемое значение

Тип (строка, целое число, массив или объект) первого элемента в массиве или строка первого знака.

Пример

В следующем примере показано, как использовать функцию first с массивом и строкой:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "arrayOutput": {
      "type": "string",
      "value": "[first(parameters('arrayToTest'))]"
    },
    "stringOutput": {
      "type": "string",
      "value": "[first('One Two Three')]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayOutput Строка один
stringOutput Строка O

indexOf

indexOf(arrayToSearch, itemToFind)

Возвращает целое число для индекса первого вхождения элемента в массиве. При сравнении строк учитывается регистр.

Параметры

Параметр Обязательное поле Type Описание
arrayToSearch Да array Массив, используемый для поиска индекса искомого элемента.
itemToFind Да целое число, строка, массив или объект Элемент, который нужно найти в массиве.

Возвращаемое значение

Целое число, представляющее первый индекс у элемента в массиве. Значения индекса начинаются с нуля. Если элемент не найден, то возвращается значение –1.

Примеры

В следующем примере показано, как использовать функции indexOf и lastIndexOf:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "names": [
      "one",
      "two",
      "three"
    ],
    "numbers": [
      4,
      5,
      6
    ],
    "collection": [
      "[variables('names')]",
      "[variables('numbers')]"
    ],
    "duplicates": [
      1,
      2,
      3,
      1
    ]
  },
  "resources": [],
  "outputs": {
    "index1": {
      "type": "int",
      "value": "[lastIndexOf(variables('names'), 'two')]"
    },
    "index2": {
      "type": "int",
      "value": "[indexOf(variables('names'), 'one')]"
    },
    "notFoundIndex1": {
      "type": "int",
      "value": "[lastIndexOf(variables('names'), 'Three')]"
    },
    "index3": {
      "type": "int",
      "value": "[lastIndexOf(variables('numbers'), 4)]"
    },
    "index4": {
      "type": "int",
      "value": "[indexOf(variables('numbers'), 6)]"
    },
    "notFoundIndex2": {
      "type": "int",
      "value": "[lastIndexOf(variables('numbers'), '5')]"
    },
    "index5": {
      "type": "int",
      "value": "[indexOf(variables('collection'), variables('numbers'))]"
    },
    "index6": {
      "type": "int",
      "value": "[indexOf(variables('duplicates'), 1)]"
    },
    "index7": {
      "type": "int",
      "value": "[lastIndexOf(variables('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, ...)

Возвращает из параметров один массив или объект с общими элементами.

В Bicep используйте функцию intersection.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да массив или объект Первое значение для поиска общих элементов.
arg2 Да массив или объект Второе значение для поиска общих элементов.
дополнительные аргументы No массив или объект Дополнительные значения для поиска общих элементов.

Возвращаемое значение

Массив или объект с общими элементами.

Пример

В следующем примере показано, как использовать функцию объединения по пересечению с массивами и объектами.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstObject": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b",
        "three": "c"
      }
    },
    "secondObject": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "z",
        "three": "c"
      }
    },
    "firstArray": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    },
    "secondArray": {
      "type": "array",
      "defaultValue": [ "two", "three" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "objectOutput": {
      "type": "object",
      "value": "[intersection(parameters('firstObject'), parameters('secondObject'))]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[intersection(parameters('firstArray'), parameters('secondArray'))]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
objectOutput Object {"one": "a", "three": "c"}
arrayOutput Массив ["two", "three"]

последняя

last(arg1)

Возвращает последний элемент массива или последний знак строки.

В Bicep используйте функцию last.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да массив или строка Значение, из которого необходимо извлечь последний элемент или знак.

Возвращаемое значение

Тип (строка, целое число, массив или объект) последнего элемента в массиве или последнего символа в строке.

Пример

В следующем примере показано, как использовать функцию last с массивом и строкой:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "arrayOutput": {
      "type": "string",
      "value": "[last(parameters('arrayToTest'))]"
    },
    "stringOutput": {
      "type": "string",
      "value": "[last('One Two Three')]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayOutput Строка три
stringOutput Строка e

lastIndexOf

lastIndexOf(arrayToSearch, itemToFind)

Возвращает целое число для индекса последнего вхождения элемента в массиве. При сравнении строк учитывается регистр.

Параметры

Параметр Обязательное поле Type Описание
arrayToSearch Да array Массив, используемый для поиска индекса искомого элемента.
itemToFind Да целое число, строка, массив или объект Элемент, который нужно найти в массиве.

Возвращаемое значение

Целое число, представляющее последний индекс у элемента в массиве. Значения индекса начинаются с нуля. Если элемент не найден, то возвращается значение –1.

Примеры

В следующем примере показано, как использовать функции indexOf и lastIndexOf:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "names": [
      "one",
      "two",
      "three"
    ],
    "numbers": [
      4,
      5,
      6
    ],
    "collection": [
      "[variables('names')]",
      "[variables('numbers')]"
    ],
    "duplicates": [
      1,
      2,
      3,
      1
    ]
  },
  "resources": [],
  "outputs": {
    "index1": {
      "type": "int",
      "value": "[lastIndexOf(variables('names'), 'two')]"
    },
    "index2": {
      "type": "int",
      "value": "[indexOf(variables('names'), 'one')]"
    },
    "notFoundIndex1": {
      "type": "int",
      "value": "[lastIndexOf(variables('names'), 'Three')]"
    },
    "index3": {
      "type": "int",
      "value": "[lastIndexOf(variables('numbers'), 4)]"
    },
    "index4": {
      "type": "int",
      "value": "[indexOf(variables('numbers'), 6)]"
    },
    "notFoundIndex2": {
      "type": "int",
      "value": "[lastIndexOf(variables('numbers'), '5')]"
    },
    "index5": {
      "type": "int",
      "value": "[indexOf(variables('collection'), variables('numbers'))]"
    },
    "index6": {
      "type": "int",
      "value": "[indexOf(variables('duplicates'), 1)]"
    },
    "index7": {
      "type": "int",
      "value": "[lastIndexOf(variables('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)

Возвращает количество элементов в массиве, символов в строке или свойств корневого уровня в объекте.

В Bicep используйте функцию length.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да массив, строка или объект Массив, используемый для получения числа элементов, строка, используемая для получения числа символов, или объект, используемый для получения числа свойств корневого уровня.

Возвращаемое значение

Целое число.

Пример

В следующем примере показано, как использовать функцию length с массивом и строкой.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "arrayToTest": {
      "type": "array",
      "defaultValue": [
        "one",
        "two",
        "three"
      ]
    },
    "stringToTest": {
      "type": "string",
      "defaultValue": "One Two Three"
    },
    "objectToTest": {
      "type": "object",
      "defaultValue": {
        "propA": "one",
        "propB": "two",
        "propC": "three",
        "propD": {
          "propD-1": "sub",
          "propD-2": "sub"
        }
      }
    }
  },
  "resources": [],
  "outputs": {
    "arrayLength": {
      "type": "int",
      "value": "[length(parameters('arrayToTest'))]"
    },
    "stringLength": {
      "type": "int",
      "value": "[length(parameters('stringToTest'))]"
    },
    "objectLength": {
      "type": "int",
      "value": "[length(parameters('objectToTest'))]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayLength Int 3
stringLength Int 13
objectLength Int 4

Эту функцию можно использовать с массивом для указания числа итераций при создании ресурсов. В следующем примере параметр siteNames ссылается на массив имен для использования при создании веб-сайтов.

"copy": {
  "name": "websitescopy",
  "count": "[length(parameters('siteNames'))]"
}

Дополнительные сведения об использовании этой функции с массивом см. в статье Итерация ресурсов в шаблонах ARM.

макс.

max(arg1)

Возвращает максимальное значение из массива целых чисел или разделенный запятыми список целых чисел.

В Bicep используйте функцию max.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да массив целых чисел или разделенный запятыми список целых чисел Коллекция, для которой необходимо получить максимальное значение.

Возвращаемое значение

Целое число, представляющее максимальное значение.

Пример

В следующем примере показано, как использовать функцию max с массивом и списком целых чисел.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ 0, 3, 2, 5, 4 ]
    }
  },
  "resources": [],
  "outputs": {
    "arrayOutput": {
      "type": "int",
      "value": "[max(parameters('arrayToTest'))]"
    },
    "intOutput": {
      "type": "int",
      "value": "[max(0,3,2,5,4)]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayOutput Int 5
intOutput Int 5

мин

min(arg1)

Возвращает минимальное значение из массива целых чисел или разделенный запятыми список целых чисел.

В Bicep используйте функцию min.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да массив целых чисел или разделенный запятыми список целых чисел Коллекция, для которой необходимо получить минимальное значение.

Возвращаемое значение

Целое число, представляющее минимальное значение.

Пример

В следующем примере показано, как использовать функцию min с массивом и списком целых чисел.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ 0, 3, 2, 5, 4 ]
    }
  },
  "resources": [],
  "outputs": {
    "arrayOutput": {
      "type": "int",
      "value": "[min(parameters('arrayToTest'))]"
    },
    "intOutput": {
      "type": "int",
      "value": "[min(0,3,2,5,4)]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayOutput Int 0
intOutput Int 0

range

range(startIndex, count)

Создает массив целых чисел, используя начальное целое число и количество элементов.

В Bicep используйте функцию range.

Параметры

Параметр Обязательное поле Type Описание
startIndex Да INT Первое целое число в массиве. Сумма значений startIndex и count не должна превышать 2147483647.
count Да INT Количество целых чисел в массиве. Значение должно быть неотрицательным целым числом не больше 10000.

Возвращаемое значение

Массив целых чисел.

Пример

В следующем примере показано, как использовать функцию range.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "startingInt": {
      "type": "int",
      "defaultValue": 5
    },
    "numberOfElements": {
      "type": "int",
      "defaultValue": 3
    }
  },
  "resources": [],
  "outputs": {
    "rangeOutput": {
      "type": "array",
      "value": "[range(parameters('startingInt'),parameters('numberOfElements'))]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
rangeOutput Массив [5, 6, 7]

skip

skip(originalValue, numberToSkip)

Возвращает массив, содержащий все элементы из исходного массива, начиная с заданной позиции в массиве, или строку, содержащую все знаки из исходной строки, начиная с заданной позиции в строке.

В Bicep используйте функцию skip.

Параметры

Параметр Обязательное поле Type Описание
originalValue Да массив или строка Массив или строка, используемые для пропуска.
numberToSkip Да INT Число элементов или знаков, которые необходимо пропустить. Если это значение меньше или равно 0, то возвращаются все элементы или знаки в значении. Если это значение превышает длину массива или строки, возвращается пустой массив или строка.

Возвращаемое значение

Массив или строка.

Пример

В следующем примере пропускается заданное число элементов в массиве и заданное число знаков в строке.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "testArray": {
      "type": "array",
      "defaultValue": [
        "one",
        "two",
        "three"
      ]
    },
    "elementsToSkip": {
      "type": "int",
      "defaultValue": 2
    },
    "testString": {
      "type": "string",
      "defaultValue": "one two three"
    },
    "charactersToSkip": {
      "type": "int",
      "defaultValue": 4
    }
  },
  "resources": [],
  "outputs": {
    "arrayOutput": {
      "type": "array",
      "value": "[skip(parameters('testArray'),parameters('elementsToSkip'))]"
    },
    "stringOutput": {
      "type": "string",
      "value": "[skip(parameters('testString'),parameters('charactersToSkip'))]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayOutput Массив ["three"]
stringOutput Строка two three

take

take(originalValue, numberToTake)

Возвращает массив или строку. Если это массив, то он содержит указанное числом элементов, считая от начала массива. Если это строка, то она содержит указанное число символов, считая от начала строки.

В Bicep используйте функцию take.

Параметры

Параметр Обязательное поле Type Описание
originalValue Да массив или строка Массив или строка, из которых берутся элементы.
numberToTake Да INT Число элементов или знаков, которые необходимо взять. Если это значение меньше или равно 0, то возвращается пустой массив или строка. Если это значение превышает длину заданного массива или строки, возвращаются все элементы в массиве или строке.

Возвращаемое значение

Массив или строка.

Пример

В следующем примере из массива извлекается заданное число элементов, а из строки — заданное число знаков.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "testArray": {
      "type": "array",
      "defaultValue": [
        "one",
        "two",
        "three"
      ]
    },
    "elementsToTake": {
      "type": "int",
      "defaultValue": 2
    },
    "testString": {
      "type": "string",
      "defaultValue": "one two three"
    },
    "charactersToTake": {
      "type": "int",
      "defaultValue": 2
    }
  },
  "resources": [],
  "outputs": {
    "arrayOutput": {
      "type": "array",
      "value": "[take(parameters('testArray'),parameters('elementsToTake'))]"
    },
    "stringOutput": {
      "type": "string",
      "value": "[take(parameters('testString'),parameters('charactersToTake'))]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
arrayOutput Массив ["one", "two"]
stringOutput Строка on

union

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

Возвращает из параметров один массив или объект со всеми элементами. Для массивов повторяющиеся значения включаются только один раз. Для объектов повторяющиеся имена свойств включаются только один раз.

В Bicep используйте функцию union.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да массив или объект Первое значение для объединения элементов.
arg2 Да массив или объект Второе значение для объединения элементов.
дополнительные аргументы No массив или объект Дополнительные значения для объединения элементов.

Возвращаемое значение

Массив или объект.

Замечания

Функция объединения использует последовательность параметров, чтобы определить порядок и значения в результате.

Для массивов эта функция итеративно просматривает каждый элемент в первом параметре и добавляет в результат те из них, которые в нем еще не присутствуют. Затем она повторяет этот процесс для второго и последующих параметров. Если значение уже включено в результат, сохраняется его прежнее расположение в массиве.

При просмотре объектов к результату добавляются имена и значения свойств из первого параметра. Для последующих параметров к результату добавляются новые имена свойств, если они есть. Если в последующем параметре есть свойство с именем, которое уже встречалось ранее, его значение перезаписывается поверх прежнего. Порядок свойств не гарантируется.

Функция объединения объединяет не только элементы верхнего уровня, но и рекурсивно объединяет все вложенные объекты внутри них. Вложенные значения массива не объединяются. См. второй пример в следующем разделе.

Пример

В следующем примере показано, как использовать функцию union с массивами и объектами.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstObject": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b",
        "three": "c1"
      }
    },
    "secondObject": {
      "type": "object",
      "defaultValue": {
        "three": "c2",
        "four": "d",
        "five": "e"
      }
    },
    "firstArray": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    },
    "secondArray": {
      "type": "array",
      "defaultValue": [ "three", "four" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "objectOutput": {
      "type": "object",
      "value": "[union(parameters('firstObject'), parameters('secondObject'))]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[union(parameters('firstArray'), parameters('secondArray'))]"
    }
  }
}

Выходные данные из предыдущего примера со значениями по умолчанию:

Имя. Тип значение
objectOutput Object {"one": "a", "two": "b", "three": "c2", "four": "d", "five": "e"}
arrayOutput Массив ["one", "two", "three", "four"]

В следующем примере показана возможность глубокого слияния:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "firstObject": {
      "property": {
        "one": "a",
        "two": "b",
        "three": "c1"
      },
      "nestedArray": [
        1,
        2
      ]
    },
    "secondObject": {
      "property": {
        "three": "c2",
        "four": "d",
        "five": "e"
      },
      "nestedArray": [
        3,
        4
      ]
    },
    "firstArray": [
      [
        "one",
        "two"
      ],
      [
        "three"
      ]
    ],
    "secondArray": [
      [
        "three"
      ],
      [
        "four",
        "two"
      ]
    ]
  },
  "resources": [],
  "outputs": {
    "objectOutput": {
      "type": "Object",
      "value": "[union(variables('firstObject'), variables('secondObject'))]"
    },
    "arrayOutput": {
      "type": "Array",
      "value": "[union(variables('firstArray'), variables('secondArray'))]"
    }
  }
}

Выходные данные из предыдущего примера:

Имя. Тип значение
objectOutput Object {"property":{"one":"a","two":"b","three":"c2","four":"d","пять":"e"},"nestedArray":[3,4]}
arrayOutput Массив [["один","два"],["три"],["четыре","два"]]

Если вложенные массивы были объединены, значение objectOutput.nestedArray будет равно [1, 2, 3, 4], а значение arrayOutput будет [["один", "два", "три"], ["три", "четыре", "два"]].

Следующие шаги