ARM テンプレート用の配列関数

Resource Manager では、Azure Resource Manager テンプレート (ARM テンプレート) で配列を操作するために、次の関数が提供されています。

文字列値の配列をある値で区切られた状態にするには、「 split」を参照してください。

注意

This article contains Bicep examples. Bicep is currently in preview. For more information, see Bicep overview.

array

array(convertToArray)

値を配列に変換します。

パラメーター

パラメーター 必須 説明
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 Array [1]
stringOutput Array ["efgh"]
objectOutput Array [{"a": "b", "c": "d"}]

concat

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

複数の配列を結合し、連結された配列を返します。または複数の文字列値を結合し、連結文字列を返します。

パラメーター

パラメーター 必須 説明
arg1 はい 配列または文字列 連結する最初の配列または文字列。
残りの引数 いいえ 配列または文字列 順次連結する残りの配列または文字列。

この関数は、任意の数の引数を取ることができ、パラメーターに文字列または配列を使用できます。 ただし、パラメーターに配列と文字列の両方を指定することはできません。 配列は、他の配列とのみ連結されます。

戻り値

連結された値の文字列または配列。

次の例では、2 つの配列を結合する方法を示します。

{
  "$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'))]"
    }
  }
}

既定値を使用した場合の前の例の出力は次のようになります。

名前
戻り値 Array ["1-1", "1-2", "1-3", "2-1", "2-2", "2-3"]

次のテンプレート例は、2 つの文字列値を結合して 1 つの連結文字列を返す方法を示しています。

{
  "$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 String prefix-5yj4yjf5mbg72

contains

contains(container, itemToFind)

配列に値が含まれるかどうか、オブジェクトにキーが含まれるかどうか、または文字列に部分文字列が含まれるかどうかを確認します。 文字列比較では大文字・小文字を区別します。 ただし、オブジェクトにキーが含まれているかどうかをテストする場合、比較で大文字・小文字を区別しません。

パラメーター

パラメーター 必須 説明
container はい 配列、オブジェクト、文字列 検索対象の値を含む値。
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 True
stringFalse Bool False
objectTrue Bool True
objectFalse Bool False
arrayTrue Bool True
arrayFalse Bool False

createArray

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

パラメーターから配列を作成します。 createArray 関数は、Bicep によるサポートはありません。 [] を使用して、配列リテラルを構築します。

パラメーター

パラメーター 必須 説明
args いいえ 文字列、整数、配列、オブジェクト 配列内の値。

戻り値

配列。 パラメーターが指定されていない場合は、空の配列を返します。

次の例では、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 Array ["a", "b", "c"]
intArray Array [1, 2, 3]
objectArray Array [{"one": "a", "two": "b", "three": "c"}]
arrayArray Array [["one", "two", "three"]]
emptyArray Array []

empty

empty(itemToTest)

配列、オブジェクト、または文字列が空かどうかを判断します。

パラメーター

パラメーター 必須 説明
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 True
objectEmpty Bool True
stringEmpty Bool True

first

first(arg1)

配列の最初の要素、または文字列の最初の文字を返します。

パラメーター

パラメーター 必須 説明
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 String one
stringOutput String O

intersection

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

パラメーターから共通の要素を持つ 1 つの配列またはオブジェクトを返します。

パラメーター

パラメーター 必須 説明
arg1 はい 配列またはオブジェクト 共通の要素の検索に使用する 1 番目の値。
arg2 はい 配列またはオブジェクト 共通の要素の検索に使用する 2 番目の値。
残りの引数 いいえ 配列またはオブジェクト 共通の要素の検索に使用する残りの値。

戻り値

共通の要素を持つ配列またはオブジェクト。

次の例では、intersection を配列およびオブジェクトと共に使用する方法を示します。

{
  "$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 Array ["two", "three"]

last

last (arg1)

配列の最後の要素、または文字列の最後の文字を返します。

パラメーター

パラメーター 必須 説明
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 String three
stringOutput String e

length

length(arg1)

配列内の要素、文字列内の文字、またはオブジェクト内のルート レベル プロパティの数を返します。

パラメーター

パラメーター 必須 説明
arg1 はい array、string、または object 要素の数を取得するために使用する配列、文字の数を取得するために使用する文字列、またはルート レベル プロパティの数を取得するために使用するオブジェクト。

戻り値

整数。

次の例では、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 パラメーターは、Web サイトの作成時に使用する名前の配列を参照します。

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

配列でこの関数を使用する方法の詳細については、「ARM テンプレートでのリソースの反復処理」を参照してください。

max

max(arg1)

整数の配列または整数のコンマ区切りリストから最大値を返します。

パラメーター

パラメーター 必須 説明
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

min(arg1)

整数の配列または整数のコンマ区切りリストから最小値を返します。

パラメーター

パラメーター 必須 説明
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)

始点となる整数から、指定した数の項目が含まれる配列を作成します。

パラメーター

パラメーター 必須 説明
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 Array [5, 6, 7]

skip

skip(originalValue, numberToSkip)

配列内の指定した数の要素の後にあるすべての要素から成る配列を返します。または、文字列内の指定した数の文字の後にあるすべての文字から成る文字列を返します。

パラメーター

パラメーター 必須 説明
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 Array ["three"]
stringOutput String two three

take

take(originalValue, numberToTake)

配列の先頭から指定した数の要素を含む配列、または文字列の先頭から指定した数の文字を含む文字列を返します。

パラメーター

パラメーター 必須 説明
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 Array ["one", "two"]
stringOutput String on

union

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

パラメーターからすべての要素を持つ 1 つの配列またはオブジェクトを返します。 重複する値またはキーは、1 回のみ含まれます。

パラメーター

パラメーター 必須 説明
arg1 はい 配列またはオブジェクト 要素の結合に使用される 1 番目の値。
arg2 はい 配列またはオブジェクト 要素の結合に使用される 2 番目の値。
残りの引数 いいえ 配列またはオブジェクト 要素の結合に使用される残りの値。

戻り値

配列またはオブジェクト。

次の例では、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 Array ["one", "two", "three", "four"]

次のステップ