# ループインデックスを返す

LoopIndexファンクションを使えば、ループとその親のインデックスが返されます。

## 始める前に

入力ストラクチャーと出力ストラクチャーを持つマップを作成済みであること。次のサンプルを使用できます。

## このタスクについて

この例では、チームマネージャーと従業員に関する情報が含まれているJSONファイルを使います。一意の従業員インデックスとチームインデックスが含まれている従業員情報のXMLファイルを作成したいとします。入力には次のJSONサンプルを使います:

```
{
   "team":[
      {
         "manager":"Steve Rogers",
         "employees":[
            "Tony Stark",
            "Natasha Romanoff",
            "Bruce Banner",
            "Clint Barton"
         ]
      },
      {
         "manager":"Reed Richards",
         "employees":[
            "Susan Storm",
            "Johnny Storm",
            "Ben Grimm"
         ]
      }
   ]
}
```

次のXMLサンプルを使えば、出力ストラクチャーを作成できます。

```
<root>
	<employee>
		<employeeName/>
		<employeeIndex/>
		<teamIndex/>
	</employee>
	<employee>
		<employeeName/>
		<employeeIndex/>
		<teamIndex/>
	</employee>
</root>
```

## 手順

1. 出力employeeエレメントをクリックしてループ式を設定します:
   1. [Loop] (ループ)タブでSimpleLoopファンクションをドラッグ＆ドロップします。
   2. 入力teamエレメントをInput Map Element引数にドラッグ＆ドロップします。
   3. NestedLoopファンクションをContexts引数にドラッグ＆ドロップし、別のSimpleLoopファンクションを同じ引数にドロップします。
   4. 入力employeesエレメントをInput Map Element引数にドラッグ＆ドロップします。

   ![](https://help.qlik.com/talend/ja-JP/data-mapper-functions-reference-guide/Resources/images/return_loop_index_01_context.png)
2. 入力employeesエレメントを出力employeeNameにドラッグ＆ドロップします。
3. LoopIndexファンクションをemployeeIndexエレメントにドラッグ＆ドロップします。
4. 出力employeeエレメントをLooping Output Element引数にドラッグ＆ドロップします。
5. LoopIndexをダブルクリックし、[Use Index Of] (インデックスの使用)ドロップダウンリストで[Output Loop] (出力ループ)を選択して[OK]をクリックします。

   これは、そのエレメントが出力ストラクチャーでemployeeエレメントの反復に対応するインデックスを返す必要があることを示しています。[Input Loop] (入力ループ)を選択した場合、インデックスはteamエレメント内で入力employeesエレメントの反復に対応します。 ![](https://help.qlik.com/talend/ja-JP/data-mapper-functions-reference-guide/Resources/images/return_loop_index_02_outputloop.png)
6. LoopIndexファンクションをemployeeIndexエレメントにドラッグ＆ドロップします。
7. 出力employeeエレメントをLooping Output Element引数にドラッグ＆ドロップします。
8. LoopIndexをダブルクリックし、Looping Index of Elementでin$/employees\_input/teamを選択して[OK]をクリックします。

   employeeエレメントにはネスト化されたループが含まれているループ式があるので、対応するどの入力ループについてもインデックスを返すよう選択できます。この場合は、入力teamエレメントの反復に対応するインデックスを返したいとします。 ![](https://help.qlik.com/talend/ja-JP/data-mapper-functions-reference-guide/Resources/images/return_loop_index_03_inputloop.png)

## タスクの結果

これでマップが設定されます。 [Test Run] (テスト実行)機能を使えば結果を表示できます。この例では次のような出力が返されます。

```
<root>
  <employee>
    <employeeName>Tony Stark</employeeName>
    <employeeIndex>1</employeeIndex>
    <teamIndex>1</teamIndex>
  </employee>
  <employee>
    <employeeName>Natasha Romanoff</employeeName>
    <employeeIndex>2</employeeIndex>
    <teamIndex>1</teamIndex>
  </employee>
  <employee>
    <employeeName>Bruce Banner</employeeName>
    <employeeIndex>3</employeeIndex>
    <teamIndex>1</teamIndex>
  </employee>
  <employee>
    <employeeName>Clint Barton</employeeName>
    <employeeIndex>4</employeeIndex>
    <teamIndex>1</teamIndex>
  </employee>
  <employee>
    <employeeName>Susan Storm</employeeName>
    <employeeIndex>5</employeeIndex>
    <teamIndex>2</teamIndex>
  </employee>
  <employee>
    <employeeName>Johnny Storm</employeeName>
    <employeeIndex>6</employeeIndex>
    <teamIndex>2</teamIndex>
  </employee>
  <employee>
    <employeeName>Ben Grimm</employeeName>
    <employeeIndex>7</employeeIndex>
    <teamIndex>2</teamIndex>
  </employee>
</root>
```