---
schema_version: "1"
id: cd0f3633442a137aa36a118e3dd29093953d8ac4b4b467673b733b26053b878d
title: Zip Arrays Together
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/dataweave/2.3/dataweave-cookbook-zip-arrays-together.md
canonical_url: https://docs.mulesoft.com/dataweave/2.3/dataweave-cookbook-zip-arrays-together
source_site: docs.mulesoft.com
content_type: documentation
content_hash: b094c182c8c9870b9d4e145c5a0b58eae13929f313eec5c25a23c9c40def3ceb
description: MuleSoft Documentation Site
release: "2.3"
latest: false
---
---
product: DataWeave
version: 2.3
keywords: studio, anypoint, transform, transformer, format, aggregate, rename, split, filter convert, json, metadata, dataweave, data weave, datamapper, dwl, dfl, dw, output structure, input structure, map, mapping, as
---

# Zip Arrays Together

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

This DataWeave example restructures bills of materials for Ikea-style furniture. The input contains
the measurements and amounts of screws in two separate arrays that run in parallel, the
transformation reorders them so that the "screws" array is made up of tuples, each with a
measurement and its corresponding amount. The same is applied to wooden boards: the input contains
two arrays with the x and the y measurements of each; the transformation rearranges them into a
series of tuples, one for each board.

It uses these DataWeave functions:

- `map` to go through the elements in the main array.

- `zip` to rearrange pairs of long arrays, so that they’re grouped by index into multiple
  two-element arrays.

DataWeave Script:

```dataweave
%dw 2.0
output application/json
---
payload map (item, index) ->
{
    name: item.name,
    id: item.itemID,
    screws: zip(item.screws.size, item.screws.quantity),
    measurements: zip(item.measurements.x,item.measurements.y )
}
```

Input JSON Payload:

```json
[
  {
    "name": "wooden-chair",
    "itemID": "23665",
    "screws": {
      "size": [4, 6, 10],
      "quantity": [15, 8, 28]
    },
    "measurements": { "x": [25, 46, 46, 16, 150, 5, 100, 100, 8], "y": [15, 4, 4, 80, 3, 4, 4, 15] }
  },
  {
    "name": "cofee-table",
    "itemID": "14398",
    "screws": {
      "size": [3, 8, 10],
      "quantity": [8, 12, 20]
    },
    "measurements": {
      "x": [55, 48, 48, 48, 48, 30, 30, 30, 30],
      "y": [55, 40, 40, 40, 50, 4, 4, 4, 4]
    }
  }
]
```

Output JSON:

```json
[
  {
    "name": "wooden-chair",
    "id": "23665",
    "screws": [
      [4, 15],
      [6, 8],
      [10, 28]
    ],
    "measurements": [
      [25, 15],
      [46, 4],
      [46, 4],
      [16, 80],
      [150, 3],
      [5, 4],
      [100, 4],
      [100, 15]
    ]
  },
  {
    "name": "cofee-table",
    "id": "14398",
    "screws": [
      [3, 8],
      [8, 12],
      [10, 20]
    ],
    "measurements": [
      [55, 55],
      [48, 40],
      [48, 40],
      [48, 40],
      [48, 50],
      [30, 4],
      [30, 4],
      [30, 4],
      [30, 4]
    ]
  }
]
```

## Related Examples

- [Regroup Fields](https://docs.mulesoft.com/dataweave/2.3/dataweave-cookbook-regroup-fields)

- [Transform XML to JSON](https://docs.mulesoft.com/dataweave/2.3/dataweave-cookbook-perform-basic-transformation)

- [Define a Custom Addition Function](https://docs.mulesoft.com/dataweave/2.3/dataweave-cookbook-define-a-custom-addition-function)

- [Pick Top Elements](https://docs.mulesoft.com/dataweave/2.3/dataweave-cookbook-pick-top-elements)

## See Also

- [DataWeave Types](https://docs.mulesoft.com/dataweave/2.3/dataweave-types)

- [DataWeave Selectors](https://docs.mulesoft.com/dataweave/2.3/dataweave-selectors)

- [DataWeave Cookbook](https://docs.mulesoft.com/dataweave/2.3/dataweave-cookbook)
