---
schema_version: "1"
id: db73600f0a2bc1d127a94961002afdd95b0de4ce5f528ab686e12d053683fb0b
title: リスト内のデータをフラット化する関数の定義
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.4/dataweave-cookbook-define-function-to-flatten-list.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-define-function-to-flatten-list
source_site: docs.mulesoft.com
content_type: documentation
content_hash: b0816de503b0f5bd7bbbca23926738d5fd534b2be99d053a1254e04cab618ea1
description: MuleSoft Documentation Site
release: "2.4"
latest: false
---
# リスト内のデータをフラット化する関数の定義

ネストされたデータ構造の場合、そのデータを削減 (「フラット化」) し、よりシンプルな出力を生成する必要が生じることがあります。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。

この DataWeave の例では、ヘッダーで定義された関数を使用して ​`interests`​ および ​`contenttypes`​ 配列のデータをフラット化し、空でない場合にのみ ​`contenttypes`​ を出力します。

この例では、次の関数を使用します。

- 入力のセット要素を調べる ​`map`​。
- 配列をフラット化する ​`reduce`​。
- 項目を条件付きで表示する ​`if`​。
- 入力を解析する ​`splitBy`​。

DataWeave スクリプト:

```dataweave
%dw 2.0
output application/json
fun reduceMapFor(data) = data reduce (($$ splitBy ":")[0] ++ "," ++ ($ splitBy ":")[0])
---
payload.results map() ->
{
  email: $.profile.email,
  name: $.profile.firstName,
  tags: reduceMapFor($.data.interests.tags[0]),
        (contenttypes: reduceMapFor($.data.interests.contenttypes[0])) if(sizeOf($.data.interests.contenttypes[0]) > 0)
}
```

入力 JSON ペイロード:

```json
{
  "results": [
    {
      "profile": {
        "firstName": "john",
        "lastName": "doe",
        "email": "johndoe@demo.com"
      },
      "data": {
        "interests": [
          {
            "language": "English",
            "tags": [
              "digital-strategy:Digital Strategy",
              "innovation:Innovation"
            ],
            "contenttypes": []
          }
        ]
      }
    },
    {
      "profile": {
        "firstName": "jane",
        "lastName": "doe",
        "email": "janedoe@demo.com"
      },
      "data": {
        "interests": [
          {
            "language": "English",
            "tags": [
              "tax-reform:Tax Reform",
              "retail-health:Retail Health"
            ],
            "contenttypes": [
              "News",
              "Analysis",
              "Case studies",
              "Press releases"
            ]
          }
        ]
      }
    }
  ],
  "objectsCount": 2,
  "totalCount": 2,
  "statusCode": 200,
  "errorCode": 0,
  "statusReason": "OK"
}
```

出力

```json
[
  {
    "email": "johndoe@demo.com",
    "name": "john",
    "tags": "digital-strategy,innovation"
  },
  {
    "email": "janedoe@demo.com",
    "name": "jane",
    "tags": "tax-reform,retail-health",
    "contenttypes": "News,Analysis,Case studies,Press releases"
  }
]
```

## [](#関連する例)関連する例

- [定数ディレクティブの使用](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-use-constant-directives)
- [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-conditional-list-reduction-via-function)
- [カスタム追加関数の定義](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-define-a-custom-addition-function)
- [関数を引数として渡す](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook-pass-functions-as-arguments)

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

- [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-selectors)
- [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.4/dataweave-cookbook)