# Logical functions

These functions provide convenient one-line methods for evaluating expressions.

## Boolean

#### Boolean(value) -> Boolean

Function bundle: Core

Attempts to convert the given non-boolean value to a boolean value. For example a text value of 'true' would become `true`.

Parameter

• value: Text | Number - A text or number value to be converted to a boolean.

Return value: Boolean

##### Examples
Use dark colors for code blocksCopy
``````// returns `true`
Boolean('true')``````
Use dark colors for code blocksCopy
``````// returns `false`. A value of 1 would return `true`
Boolean(0)``````
Use dark colors for code blocksCopy
``````// returns `false`
Boolean('hello')``````

## Decode

#### Decode(expression, [compare1, return1, ..., compareN, returnN]?, default?) -> Any

Function bundle: Core

Evaluates an expression to a value and compares the result value with the value of subsequent parameters. If the expression evaluates to a matching value, it returns the subsequent parameter value. If no matches are found, then a `default` value may be provided. This is similar to a switch/case statement

Parameters

• expression: Any - An Arcade expression that must evaluate to a value that can be compared with the provided case values.
• [compare1, return1, ..., compareN, returnN] (Optional): Any - A set of compare values and return value pairs.
• default (Optional): Any - A default value to return if none of the compare values match. This may be a value of any type.

Return value: Any
Returns the matched return value. If no matches are found, then the `default` value is returned.

##### Example
Use dark colors for code blocksCopy
``````// returns a meaningful value when a field contains coded values
var code = \$feature.codedValue;
var decodedValue = Decode(code, 1, 'Residential', 2, 'Commercial', 3, 'Mixed', 'Other');``````

## DefaultValue

#### DefaultValue(value, defaultValue) -> Any

Function bundle: Core

Returns a specified default value if an empty value is detected.

Parameters

• value: Any - The input value to compare against `null` or `''`. This may be a value of any type. However, if this value is an empty array, then the empty array will be returned.
• defaultValue: Any - Return this value if the provided `value` is empty. The data type of `defaultValue` must match the data type of `value`.

Return value: Any
If `value` is empty, then the `defaultValue` is returned. Otherwise, the value of `value` is returned.

##### Example
Use dark colors for code blocksCopy
``````// If a feature has no value in the POP_2000 field
// then 'no data' is returned
DefaultValue(\$feature.POP_2000, 'no data')``````

## Equals

#### Equals(value1, value2) -> Boolean

Since version 1.24

Function bundle: Core

Indicates if two values are equal. Object types (i.e. Arrays, Features, Dictionaries, Geometry) will return true only if they are the same object.

Parameters

• value1: Any - The first input value.
• value2: Any - The second input value.

Return value: Boolean

##### Example

Compares if two values are equal

Use dark colors for code blocksCopy
``````Equals(1, "1") // returns false

var testVal = "test";
Equals(testVal, "test") // returns true

var array1 = Array(5);
var array2 = Array(5);
Equals(array1, array2); // returns false
Equals(array1, array1); // returns true``````

## IIf

#### IIf(condition, trueValue, falseValue) -> Any

Function bundle: Core

Returns a given value if a conditional expression evaluates to `true`, and returns an alternate value if that condition evaluates to `false`.

Parameters

• condition: Boolean - A logical expression that must evaluate to `true` or `false`.
• trueValue: Any - The value to return if the `condition` evaluates to `true`. This may be a value of any type.
• falseValue: Any - The value to return if the `condition` evaluates to `false`. This may be a value of any type.

Return value: Any
If `condition` is `true`, then the `trueValue` is returned. Otherwise, the value of `falseValue` is returned.

##### Example
Use dark colors for code blocksCopy
``````// returns 'below' if the value is less than 1,000,000.
// if the value is more than 1,000,000, then returns 'above'
var population = \$feature.POP_2007;
IIf(population < 1000000, 'below', 'above');``````

## IsEmpty

#### IsEmpty(value) -> Boolean

Function bundle: Core

Returns `true` if the provided value is `null` or an empty text (e.g. `''`). Returns `false` for all other cases, including empty arrays and dictionaries.

Parameter

• value: Any - The value that is compared against `null` or `''`. This may be a value of any type.

Return value: Boolean

##### Examples
Use dark colors for code blocksCopy
``````// Returns true
IsEmpty(null)``````
Use dark colors for code blocksCopy
``````// Returns false
IsEmpty('hello world')``````

## IsNan

#### IsNan(value) -> Boolean

Since version 1.5

Function bundle: Core

Indicates whether the input value is not a number (NaN). A number is considered NaN in one of the following scenarios: - `0/0` - `Infinity / Infinity` - `Infinity * 0` - Any operation in which NaN is an operand - Casting a non-numeric text or `undefined` to a number

Parameter

• value: Any - The value to check if it is NaN.

Return value: Boolean

##### Examples
Use dark colors for code blocksCopy
``````// Returns true
IsNan(Infinity / Infinity)``````
Use dark colors for code blocksCopy
``````// Returns false
IsNan('4')``````

## TypeOf

#### TypeOf(value) -> Text

Function bundle: Core

Returns the type of the input value. Will return one of the following types: Array, Date, Text, Boolean, Number, Dictionary, Feature, FeatureSet, Point, Polygon, Polyline, Multipoint, Extent, Function, Unrecognized Type.

Parameter

• value: Any - The input value, variable, or feature attribute.

Return value: Text

##### Examples

prints 'Boolean'

Use dark colors for code blocksCopy
``TypeOf(true)``

prints 'Date'

Use dark colors for code blocksCopy
``TypeOf(Now())``

## When

#### When(expression1, result1, [expression2, result2, ..., expressionN, resultN]?, defaultValue) -> Any

Function bundle: Core

Evaluates a series of conditional expressions until one evaluates to `true`.

Parameters

• expression1: Boolean - a conditional expressions, if it evaluates to `true` then `result1` will be returned.
• result1: Any - The result returned if the `expression1` evaluates to `true`. This may be a value of any type.
• [expression2, result2, ..., expressionN, resultN] (Optional): Any - A series of conditional expressions and return values if the given expression evaluates to `true`. This may be a value of any type.
• defaultValue: Any - Returns this value if all expressions evaluate to `false`. This may be a value of any type.

Return value: Any

##### Example

Reclassify a numeric field value to a generic ranking (text).
If all expressions are `false`, then 'n/a' is returned

Use dark colors for code blocksCopy
``````var density = \$feature.densityField;
var ranking = When(density < 50, 'low', density >=50 && density < 100, 'medium', density >= 100, 'high', 'n/a');``````