Understanding Expressions in SnapLogic

In this Page

Expressions can be used in Snaps such as the Mapper (Data) Snap to manipulate data. The expressions are based off a subset of JavaScript and act accordingly unless otherwise noted.

See Using Expressions for specifics on how to enter expressions.

Operators

Comparison Operators

Comparison operators (>, >=, <, <=, ==, !=) behave the same as JavaScript comparison operators except that strict equals (===) and strict not equals (!===) are not supported.

Arithmetic Operators

Arithmetic operators (+, -, *, /) operators behave the same as JavaScript arithmetic operators except that increment (++) and decrement (--) are not supported.

Example:
1/2 = .5
parseInt(1/2) = 0

Logical Operators

Logical operators (&&, ||, !) behave the same as JavaScript logical operators

String Operators

String operators (+) behave the same as JavaScript string operators except that the shorthand assignment operator (+=) is not supported.

Spread Operators

The spread operator (...) makes it easier to build arrays, objects, and call functions where the list of arguments is built at runtime. For instance, while using in an array literal, the value on the right of the operator is inserted into the new array at that position. Similarly, in a function call, the array expands and is used as the arguments to the function. In an object literal, the right side of the operator is another object that has its keys added to the new object.

Examples:

To build a new array that is made up of another array surrounded by two elements:

If you want to find the maximum value in an array of numbers:

To create a new object with some fixed values and entries in the "$extra" object:

Special Operators

Comments

You can add notes to your expressions using comments.  A comment starts with '/*' and ends with '*/', for example:

The comment will be ignored when evaluating the expression, it is only for the reader's benefit.

Operator Precedence

Operator typeIndividual operators
member. []
call()
negation! -
multiply/divide* / %
addition/subtraction+ -
relational< <= > >=
equality== !=
logical-and&&
logical-or||
comma, 

Unsupported Operations

  • Assignment 
    • Creating variables and assigning values is not supported 
    • Example: var temp = 10
  • Short hand assignment
    • Example: count += 5
  • Strict equals
    • Example: first === last
  • Strict not equals
    • Example: first !== last
  • Increment
    • Example: count++
  • Decrement
    • Example: count--

Accessing Document Values

To access values in a document, JavaScript object accessors can be used.
For a given document data:


The expression $first_name would return the 'first_name' property which is James.
The 'first_name' property can also be accessed by using array notation $['first_name'].
 
JavaScript array accessors can be used also if the object is an array/list.
For a given document data:

[ 1, 2, 3]
 

$[1] would return the value 2.

More complex example:

$names[2] would return the value Fred.

Arrow Functions

Custom expression language functions can be created using the arrow function syntax:

These functions can be passed to other functions that accept callbacks, like Array.map() or Array.filter(), or they can be put into an expression library for use in any expression property in your pipelines.

Example

To multiply all numbers in an array by ten:
[1, 2, 3].map(x => x * 10)

Result:

  [10, 20, 30]