Forum Discussion
3 Replies
- viktor_nContributor II
Hi @spinaka,
I do not understand the “Column mapping data from parameter”. You are sending this array as parameter in the pipeline or something ?
Here is a solution that might help you, if it’s not correct just answer me question above.
My sample data for the expression:
[ { "ID":1, "NAME":"testuser", "Mapping": [ { "src_col_name": "ID", "tgt_col_name": "sys_id" }, { "src_col_name": "NAME", "tgt_col_name": "user_name" } ] } ]
Expression:
$.mapKeys((value, key) => $Mapping.findIndex(el => el.src_col_name == key) >= 0 ? $Mapping.find(element => element.src_col_name == key).tgt_col_name : key)
Output:
[ { "sys_id": 1, "user_name": "testuser" } ]
Regards.
Viktor- spinakaNew Contributor III
Amazing @viktor_n. I made a little change and your trick worked perfectly. You deserve an award 🙂
I will be using it in my original pipeline to see the same result. Would mind clarifying the “findIndex()” used here?
I transformed the column mapping accordingly. Not an issue.
- viktor_nContributor II
findIndex() function is used for searching the index of a particular element in Array. If match is not found, -1 is returned.
Syntax:
{ Array }.findIndex(((element, index, array) => { condition })
Accepts a callback function that returns 3 parameters.- First parameter is the value of each element
- Second is the index
- Third is the original array.
The returned index is the index of the first element that returns true.
$Mapping.findIndex(el => el.src_col_name == key)
Here inside the expression I check if the ‘Mapping’ array has ‘src_col_name’ with a value same as the field from the root($), and if it finds a match it will return the index of that particular element, otherwise it will be -1.
Hope this will help you