---
schema_version: "1"
id: 2c98198dc31c08dd89b1a446c9df108182acbe3b5dd1fac8b9a781eadb0ccb94
title: groupBy
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.6/dw-core-functions-groupby.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.6/dw-core-functions-groupby
source_site: docs.mulesoft.com
content_type: documentation
content_hash: e5f29380f3d9c3f16084648d071ebfca9f1eac5ec2e2c5b22f45c2352a0daa6b
description: MuleSoft Documentation Site
release: "2.6"
latest: false
---
# groupBy

## [](#groupby1)groupBy<T, R>(items: Array<T>, criteria: (item: T, index: Number) -> R): {| (R): Array<T> |}

指定された条件 (式や一致セレクターなど) に基づいて配列の項目をグループ化するオブジェクトを返します。

このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、null 値を処理します。

### [](#パラメーター)パラメーター

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">名前</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>items</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">グループ化する配列。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>criteria</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">配列の項目をグループ化するための条件を提供する式。</p></td>
</tr>
</tbody>
</table>

### [](#例)例

次の例では、入力配列 ​`["a","b","c"]`​ の項目をインデックスでグループ化します。数値インデックスが文字列として返され、配列の項目 (または値) が配列 (この場合はそれぞれに 1 つの項目を含む) として返されます。配列の項目は、名前付きパラメーター (​`item`​ および ​`index`​) を使用する匿名関数 ​`(item, index) → index`​ に基づいてグループ化されます。 `["a","b","c"] groupBy $$`​ のように、匿名パラメーター ​`$$`​ を使用して同じ結果を生成し、配列のインデックスを特定できます。

#### [](#ソース)ソース

```DataWeave
%dw 2.0
output application/json
---
["a","b","c"] groupBy (item, index) -> index
```

#### [](#出力)出力

```JSON
{ "2": [ "c" ], "1": [ "b" ], "0": [ "a" ] }
```

### [](#例-2)例

次の例では、言語項目に基づいて配列の要素をグループ化します。 グループ化条件を指定するために ​`item.language`​ セレクターが使用されています。このため、結果のオブジェクトでは、入力からの「language」値 (​`"Scala"`​ と ​`"Java"`​) を使用して出力をグループ化します。また、出力の配列には各入力オブジェクトが配置されています。

#### [](#ソース-2)ソース

```DataWeave
%dw 2.0
var myArray = [
   { "name": "Foo", "language": "Java" },
   { "name": "Bar", "language": "Scala" },
   { "name": "FooBar", "language": "Java" }
]
output application/json
---
myArray groupBy (item) -> item.language
```

#### [](#出力-2)出力

```JSON
{
  "Scala": [
    { "name": "Bar", "language": "Scala" }
  ],
  "Java": [
    { "name": "Foo", "language": "Java" },
    { "name": "FooBar", "language": "Java" }
  ]
}
```

### [](#例-3)例

次の例では、​`groupBy "myLabels"`​ を使用して、​`"mylabels"`​ をキーとして、選択された値の配列 (​`["Open New", "Zoom In", "Zoom Out", "Original View" ]`​) を値とするオブジェクトを返します。配列の作成にはセレクター (​`myVar.menu.items.*label`​) が使用されています。このセレクターは、​`"label"`​ をキーとするすべての値を保持しますが、​`"id"`​ をキーとする値を除外します。

#### [](#ソース-3)ソース

```DataWeave
%dw 2.0
var myVar = { menu: {
    header: "Move Items",
    items: [
        {"id": "internal"},
        {"id": "left", "label": "Move Left"},
        {"id": "right", "label": "Move Right"},
        {"id": "up", "label": "Move Up"},
        {"id": "down", "label": "Move Down"}
    ]
}}
output application/json
---
(myVar.menu.items.*label groupBy "myLabels")
```

#### [](#出力-3)出力

```JSON
{ "myLabels": [ "Move Left", "Move Right", "Move Up", "Move Down" ] }
```

## [](#groupby2)groupBy<R>(text: String, criteria: (character: String, index: Number) -> R): { (R): String }

指定された条件 (式や一致セレクターなど) に基づいて文字列の文字をグループ化するオブジェクトを返します。

このバージョンの ​`groupBy`​ は、​`criteria`​ 関数を使用して配列の要素をグループ化します。その他のバージョンは、オブジェクトで動作し、​`null`​ 値を処理します。

### [](#パラメーター-2)パラメーター

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">名前</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>text</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">グループ化する文字列。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>criteria</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">使用する条件。</p></td>
</tr>
</tbody>
</table>

### [](#例-4)例

次の例では、​`groupBy`​ を使用して文字列を母音と母音以外に分割する方法を示しています。

#### [](#ソース-4)ソース

```DataWeave
%dw 2.0
output application/json
---
"hello world!" groupBy (not isEmpty($ find /[aeiou]/))
```

#### [](#出力-4)出力

```Json
{
  "false": "hll wrld!",
  "true": "eoo"
}
```

## [](#groupby3)groupBy<K, V, R>(object: { (K)?: V }, criteria: (value: V, key: K) -> R): { (R): { (K)?: V } }

入力内の要素を反復処理するために ​`groupBy`​ で使用する条件に基づいて、オブジェクトの要素をグループ化します。

### [](#パラメーター-3)パラメーター

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">名前</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>object</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">グループ化するオブジェクトを含むオブジェクト。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>criteria</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">グループ化に使用するオブジェクトの ​<code>key</code>​ や ​<code>value</code>​ など、入力オブジェクト内の要素に適用するグループ化条件。</p></td>
</tr>
</tbody>
</table>

### [](#例-5)例

次の例では、入力オブジェクト内の各キーの値の代わりに匿名パラメーター ​`$`​ を使用して、オブジェクトの配列内のオブジェクトをグループ化します。この値には DataWeave ​`upper`​ 関数が適用されます。出力では、この値は大文字のキーになります。​`{ "a" : "b", "c" : "d"} groupBy (value) → upper(value)`​ にように、匿名関数の代わりに名前付きパラメーターを使用して、同じ例を記述することもできます。

#### [](#ソース-5)ソース

```DataWeave
%dw 2.0
output application/json
---
{ "a" : "b", "c" : "d"} groupBy upper($)
```

#### [](#出力-5)出力

```JSON
{ "D": { "c": "d" }, "B": { "a": "b" } }
```

### [](#例-6)例

次の例では、​`groupBy "costs"`​ を使用して XML オブジェクトから JSON オブジェクトを生成します。JSON オブジェクトでは、​`"costs"`​ がキーになり、XML 要素 ​`prices`​ の選択された値が JSON 値 (​`{ "price": "9.99", "price": "10.99" }`​) になります。

#### [](#ソース-6)ソース

```DataWeave
%dw 2.0
var myRead =
read("<prices><price>9.99</price><price>10.99</price></prices>","application/xml")
output application/json
---
myRead.prices groupBy "costs"
```

#### [](#出力-6)出力

```JSON
{ "costs" : { "price": "9.99", "price": "10.99" } }
```

## [](#groupby4)groupBy(value: Null, criteria: (Nothing, Nothing) -> Any): Null

`groupBy`​ を ​`null`​ 値に使用できるようにするヘルパー関数。