FOR_EACH function
FOR_EACH function
 | Function Name | Description | Usage | Input parameter | Return value | 
|---|---|---|---|---|
| FOR_EACH | Applies one or more transformation functions for each element in an array. | FOR_EACH(~objn -> Variable or Value)Where ~objn indicates the current array iteration element for which you want to apply the transformation functions. By default, the value for n starts from 1.For JSON arrays with schema, you can use a dot (.) notation following to the current array element to directly access the nested property of the that array element. See example. | Transformation functions. | An array of elements. | 
Supported data type
  The FOR_EACH function supports the following data types:
- Boolean array
- Double array
- Integer array
- JSON
- String array
Example 1: Concat a value to all the elements of a string array.
Sample data: $var1$ = {"Alex","Bola","Charlie","Dana","Hao"}
  Usage: $var1$.FOR_EACH(~obj1-> ~obj1.CONCAT("@gmail.com"))
Concat the value @gmail.com to var1.
  Output:
  
  {
  "Alex@gmail.com",
  "Bola@gmail.com",
  "Charlie@gmail.com",
  "Dana@gmail.com",
  "Hao@gmail.com"
  }
  
Example 2: Given a JSON array without schema, add a property to all the JSON objects.
Sample data:
  $var1$ =
{
  "employeeDetails": [
    {
      "name": "Alex"
    },
    {
      "name": "Bola"
    },
    {
      "name": "Charlie"
    }
  ]
}
  Usage: $var1$.employeeDetails.FOR_EACH(~obj1-> ~obj1.SET_PROPERTY("Google","company"))
Add the property company:Google to var1.
Output:
[
  {
    "name": "Alex",
    "company": "Google"
  },
  {
    "name": "Bola",
    "company": "Google"
  },
  {
    "name": "Charlie",
    "company": "Google"
  }
]
Example 3: Given a JSON array without schema, add a property to all the nested JSON objects.
Sample data:
  $var1$ =
{
  "employeeDetails": [
    {
      "name": "Alex",
      "details": [
        {
          "age": "27",
          "address": "1800 Amphibious Blvd. Mountain View, CA 94045"
        }
      ]
    },
    {
      "name": "Bob",
      "details": [
        {
          "age": "25",
          "address": "8 Rue du Nom Fictif 341 Paris"
        }
      ]
    }
  ],
  "deptDetails": [
    {
      "id1": "HR"
    },
    {
      "id2": "Finance"
    },
    {
      "id3": "Sales"
    }
  ]
}
  Usage: $var1$.employeeDetails.FOR_EACH(~obj1-> ~obj1.GET_PROPERTY("details").FOR_EACH(~obj2-> ~obj2.SET_PROPERTY("dd/mm/yyyy", "dob")))
Add the placeholder property dob: "dd/mm/yyyy" to details in var1.
Output:
  [
    [
      {
        "age": "27",
        "address": "1800 Amphibious Blvd. Mountain View, CA 94045",
        "dob": "dd/mm/yyyy"
      }
    ],
    [
      {
        "age": "25",
        "address": "8 Rue du Nom Fictif 341 Paris",
        "dob": "dd/mm/yyyy"
      }
    ]
  ]
Example 4: Given a JSON array with schema, concat the nested properties of the JSON object.
Sample data:
      $var1$ =
      {"citynames": [
      {
        "city": "Abbeville",
        "info": {
                "pincode": 29620,
                "state": "South Carolina",
                "location" : {
                      "lat" : "50.1055 N",
                     "lon": "1.8368 E"  
                }     
         }    
      },
      {
        "city": "Aberdeen",
        "info": {
                "pincode": AB10,
                "state": "Scotland",
                "location" : {
                      "lat" : "57.1499 N",
                     "lon": "2.0938 W"  
                }     
         }    
      },
      {
        "city": "Benicia",
  "info": {
                "pincode": 94510,
                "state": "California",
                "location" : {
                      "lat" : "38.0494 N",
                     "lon": "122.1586 W"  
                }     
         } 
      }
    ]
  }
Usage: $var1$.citynames.FOR_EACH(~obj1-> ~obj1.city.CONCAT(",").CONCAT(~obj1.info.location.lat).CONCAT(",").CONCAT(~obj1.info.location.lon))
Concat the nested properties of city using a separator (,) in var1.
Output:
[ "Abbeville,50.1055 N,1.8368 E", "Aberdeen,57.1499 N,2.0938 W", "Benicia,38.0494 N,122.1586 W" ]
Example 5: Resolve a JSON array object reference in a template JSON.
Sample data:
      $var2$ =
      {
        "cityName": "$~obj1.city$",
        "latitude": "$~obj1.info.location.lat$",
        "longitude": "$~obj1.info.location.lon$"
      }
    
      $var1$ =
      {"citynames": [
      {
        "city": "Abbeville",
        "info": {
                "pincode": 29620,
                "state": "South Carolina",
                "location" : {
                      "lat" : "50.1055 N",
                     "lon": "1.8368 E"  
                }     
         }    
      },
      {
        "city": "Aberdeen",
        "info": {
                "pincode": AB10,
                "state": "Scotland",
                "location" : {
                      "lat" : "57.1499 N",
                     "lon": "2.0938 W"  
                }     
         }    
      },
      {
        "city": "Benicia",
  "info": {
                "pincode": 94510,
                "state": "California",
                "location" : {
                      "lat" : "38.0494 N",
                     "lon": "122.1586 W"  
                }     
         } 
      }
    ]
  }
  
Usage: $var1$.citynames.FOR_EACH(~obj1-> $var2$.RESOLVETEMPLATE())
  Resolves references of ~obj1 in var2, where ~obj1 is the current iterating element of var1.
Output:
[
  {
    "cityName": "Abbeville",
    "latitude": "50.1055 N",
    "longitude": "1.8368 E",
  }
  {
    "cityName": "Aberdeen",
    "latitude": "57.1499 N",
    "longitude": "2.0938 W",
  }
  {
    "cityName": "Benicia",
    "latitude": "38.0494 N",
    "longitude": "122.1586 W",
  }
    
]
Recommendation
- Learn how to add and configure a Data Mapping task