Working of map and mapObject function in MuleSoft

Reading Time: 2 minutes

Before understanding the map and mapObject functions in MulseSoft, let’s get familiar with the term MuleSoft. What is Mulesoft and what is Mulesoft used for?

What is MuleSoft?

MuleSoft provides an integration platform called Anypoint Platform to help businesses connect data, applications and devices across on-premises and cloud computing environments.

What is MuleSoft used for?

MuleSoft used to connect a variety of data sources, applications, perform analytics and ETL processes.

map function

  • It transforms every item in an Array and returns an Array.
  • map takes two parameters an Array and a lambda.
  • The lambda takes in two arguments
map(Array<T>, ((T, Number) -> R)): Array<R>

Here are two type of definition, T and R.

  • T represents the type of items that the input Array contains.
  • R represents the type of items that output Array returns.
  • Number represents the index of the input Array.

Input

[1,2,3,4,5]

DataWeave Script

%dw 2.0
%dw 2.0
output json
---
payload map (n, idx) -> {
    "value": n+1,
    "index": idx

}

Output

[
  {
    "value": 2,
    "index": 0
  },
  {
    "value": 3,
    "index": 1
  },
  {
    "value": 4,
    "index": 2
  },
  {
    "value": 5,
    "index": 3
  },
  {
    "value": 6,
    "index": 4
  }
]

mapObject function

  • It transforms an Object to a new Object.
  • mapObject is used when we want to change the keys and/or values on an Object to be something else.

Syntax

mapObject(Object<K,V>, (V,K,Number) -> Object): Object

mapObject takes two parameter an Object and a lambda.

Object takes two parametes a value and key, and returns a new Object

mapObject Object<K,V> : Object

lambda takes three parametes a value, key and index, and returns a new Object.

mapObject (V,K,Number) -> Object

Here are two type definition, V and K.

  • V represents the value of the Object.
  • K represents the key of the Object.
  • Number represents the index of the Object.

Input

[
  {"First Name": "Max", "Last Name": "The Mule"},
  {"First Name": "Albert", "Last Name": "Einstein"}
]

DataWeave Script

%dw 2.0
output json
---
payload map ((item, index) -> 
        item mapObject(v,k,n)-> {
    (lower(k)) : v
    }
)

Output

[
  {
    "first name": "Max",
    "last name": "The Mule"
  },
  {
    "first name": "Albert",
    "last name": "Einstein"
  }
]
That’s all for this blog. I hope you understood the concept. .However If you have any doubt, feel free to contact me at gaurav.dubey@knoldus.com.

References

https://docs.mulesoft.com/mule-runtime/4.3/dw-core-functions-map

https://docs.mulesoft.com/mule-runtime/4.3/dw-core-functions-mapobject


Written by 

Gaurav Dubey is a Java Developer at Knoldus Software LLP. He has done M.CA from Kurukshetra University and completed Bachelor's Degree in Computer Science from M. D. University. He is a tech enthusiast with good knowledge of Java. He is majorly focused in Java practice. On the personal front, he loves to cook and travel.