cancel
Showing results for 
Search instead for 
Did you mean: 

Replace value according to its poition

KTsnap
New Contributor III

Below is the Input
[
{
@id”: “2”,
“col”: [
{
@id”: “2”,
@transable”: “yes”,
“$”: “Replace1”
},
{
@id”: “3”,
@transable”: “no”,
“$”: “Replace2”
}
],
“group”: [
{
“A”: “A1”,
“B”: “B1”,
“C”: “C1”,
“D”: “D1”,
“E”: "E1 ",
“F”: “F1”,
“G”: “G1”,
“H”: “”,
“I”: “”
},
{
“A”: “A2”,
“B”: “B2”,
“C”: “C2”,
“D”: “D2”,
“E”: “”,
“F”: “F2”,
“G”: “G2”,
“H”: “”,
“I”: “”
}
]
}
]


expected Output :

[
  {
    "group": [
      {
        "A": "A1",
        "B": "B1",
        "C": "C1",
        "D": "D1",
        "E": "E1 ",
        "F": "F1",
        "G": "G1",
        "H": "",
        "I": ""
      },
      {
        "A": "A2",
        "B": "Replace1",
        "C": "Replace2",
        "D": "D2",
        "E": "",
        "F": "F2",
        "G": "G2",
        "H": "",
        "I": ""
      }
         ]
  }
]

explanantion : @id refers to row number of the group and @id under col refers to the column number of the group where replacement needs to be done with  the value  of "$"
14 REPLIES 14

bojanvelevski
Valued Contributor

Hi @KTsnap,

I believe this expression will do the job:

$group.map((x,index)=>$['@id'] == index + 1 ? (x.mapValues((v,k)=> $col.find(e => e['@id']-1 == x.keys().indexOf(k)) != null ? $col.find(e => e['@id']-1 == x.keys().indexOf(k) ).get('$') : v)) : x)

It’s rather complex, so I would suggest you to do some testing.

Regards,
Bojan

rashmi
New Contributor III

Hi @bojanvelevski similarly if i have two array called row and group as shown below
inputcommunity
firstarray
secondarray
I need to replace the the value of second array ie group array with values from first array ie row array
to elaborate->row id in first array (row array) is corresponding to first record in second array(group array) and colid in first array(row array) is corresponding to A, B, C,D,E,F,G,H,I in the second array(group array).Example:first record of second array(group array) with values corresponding to column B and C must be updated with value ($) corresponding to first array(row array) with row id 1 and col id is 2 &col id is 3but remaining column values like A,D,E,F…I values should remain as incoming input values

Expected output is as shown below
outputcommunity

Please could u help telling how can we achieve this using mapper expression here

If my understanding is correct, this is the same situation, isn’t it ?

You just need to tweak the expression a little bit.

rashmi
New Contributor III

Hi @bojanvelevski yes but here id corresponding to row comes in an array so how can we change it accordingly?
i tried this way its not working pls could u help if am missing something or doing wrong pls
expr
input.json (1.0 KB)
@bojanvelevski, @alchemiz please could u help 😔