Forum Discussion

Noob's avatar
Noob
New Contributor
4 years ago

Copybook parse

How to use this Snap, Copybook parser. I didn’t find a proper documentation in SnapLogic on this snap.

2 Replies

  • ionutbarna's avatar
    ionutbarna
    New Contributor II

    Yes but .map() function transforms every element from the Array, I only need to change the fields where there are numbers. Is there a way that I can use conditional logic inside of the .map() function?( if typeof value == ‘number’ then value * 10 else value

    • Absolutely - the expression in the map function can use ternary logic just like you have in your example updating the object elements.

      Assuming an input array:

      { "myArray": [ "abc", 13, "def", 15 ] }
      

      This works as I believe you are requesting:
      $myArray.map(x => x instanceof Number ? x * 10 : x)

      { "updatedArray": [ "abc", 130, "def", 150 ] }
      
      • ionutbarna's avatar
        ionutbarna
        New Contributor II

        You are right, in this case it works but in my case I have an array of objects which I finally managed to work with this: jsonPath($, "$nested[*]").map(x => x.mapValues((value, key) => !isNaN(value) ? value * 10 : value))

        Input:

        "nested": [{"m": "hey", "o": 10, "p": "hello", "q": 100}]
        

        Output:

        "nested": [{"m": "hey", "o": 100, "p": "hello", "q": 1000}]
        

        Thank you @koryknick for your guidance!