---
schema_version: "1"
id: 2b2bb01db1f51cf473fc0c6d4c60e72934417ccd1471b36637cebbfbafc2fbb2
title: 配列のマップとフラット化
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.4/dataweave-cookbook-map-and-flatten.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-map-and-flatten
source_site: docs.mulesoft.com
content_type: documentation
content_hash: c37af45cb721478dc07ab08eab8571024076578c38a1ec3653085e41153f0910
description: MuleSoft Documentation Site
release: "2.4"
latest: false
---
# 配列のマップとフラット化

`flatMap`​ 関数は、入力に対して ​`map`​ をコールし、その結果をラップして ​`flatten`​ をコールします。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。

`flatMap`​ 関数は、​`map`​ へのコールの結果に対して ​`flatten`​ の使用をリファクタリングする場合に役立ちます。たとえば、次の DataWeave スクリプトについて考えてみます。

DataWeave スクリプト:

```dataweave
%dw 2.0
output application/json
var myData = [{name:1},{name:2},{name:3}]
fun myExternalFunction(data): Array =
    if(data.name == 1)
        []
    else if(data.name == 2)
        [{name: 3}, {name:5}]
    else
        [data]
---
//flatten(myData map ((item, index) -> myExternalFunction(item)))
myData flatMap ((item, index) -> myExternalFunction(item))
```

スクリプトのヘッダーでは、変数 ​`myData`​ を作成してオブジェクトの配列を定義しています。各オブジェクトにはキー ​`name`​ が含まれています。またここでは、キー ​`name`​ を含む名前-値ペアに対して実行する一連の if-else ステートメントを含む関数も定義しています。

DataWeave スクリプトの本文には、次の式が含まれています。いずれも結果は同じです。

- `flatten(myData map ((item, index) → myExternalFunction(item)))`​
- `myData flatMap ((item, index) → myExternalFunction(item))`

`flatMap`​ 式を使用する場合でも、明示的に ​`flatten`​ を使用して ​`map`​ 式をラップする場合でも、次のことが実行されます。

1. ヘッダーで定義された関数 ​`myExternalFunction()`​ の if-else 条件に従って入力配列の項目がマップされます。
    
    このマッピングの出力は次のようになります。
    
    ```json
    [
      [
      ],
      [
        { "name": 3 },
        { "name": 5 }
      ],
      [
        { "name": 3 }
      ]
    ]
    ```
2. サブ配列の要素を 1 つの配列にまとめ、親配列を削除し、空の子配列を除外することによって、マップされた結果がフラット化されます。
    
    このフラット化の出力は次のようになります。
    
    出力 JSON:
    
    ```json
    [
      {
        "name": 3
      },
      {
        "name": 5
      },
      {
        "name": 3
      }
    ]
    ```

## [](#関連情報)関連情報

- [flatMap](https://docs.mulesoft.com/jp/dataweave/2.4/dw-core-functions-flatmap)