05-05-2022 01:11 AM
I have a scenario where I have to generate random 6 digit code in every snaplogic execution from given letter set below.
0123456789ABCDEF
can any one help in this.
05-05-2022 01:40 AM
Hi @Pakhi,
Try this.
sl.range(6).map(x => "0123456789ABCDEF"[Math.round(Math.random()*15)]).join('')
Regards,
Viktor
05-09-2022 06:53 AM
Thanks its working!
Can you please explain this expression , actually how its working internally.
05-10-2022 03:11 AM
sl.range(6)
- Generates me a list with number of elements.
Inside the parameter is specified how many elements to have the list.
Ex. [0,1,2,3,4,5]
After that with the map()
function I iterate through that list.
And while iterating, for each element is generated a random number between 0 and 15.
Random number is generated with Math.random()
and Math.round()
functions.
Math.random()
- Generates a decimal number between 0 and 1.Math.random()*15
- Generated number is multiplied by the number of characters in the string.Math.round(Math.random()*15)
- Decimal number is rounded to the nearest whole number.3.656
- will be rounded to 4
.Generated random number I use it as an index from which I get character from the string.
Ex. "0123456789ABCDEF"[4] = "3"
(returns the 4th index from the string).
Now if we look at the preview of this expression, result will be list of strings.
Ex. ["3", "8", "A", "1", "C", "D"]
At the end the list is joined with join()
function. This function is used for transforming list into string. Parameter inside join function (''
) means that it will join the elements together without nothing between the elements.
Result at the end will be this:
"38A1CD"
Hope this will help understand the expression 🙂
05-10-2022 05:22 AM
excellent explanation 🙂