Forum Discussion

KTsnap's avatar
KTsnap
New Contributor III
3 years ago

Replace value according to its poition

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

  • bojanvelevski's avatar
    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's avatar
      rashmi
      New Contributor III

      Hi @bojanvelevski similarly if i have two array called row and group as shown below



      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

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

      • bojanvelevski's avatar
        bojanvelevski
        Valued Contributor

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

        You just need to tweak the expression a little bit.