Design

Array manipulation

List of functions to manipulate and transform your JSON arrays
COMMUNITY FEATURE Available for:
Carbone Cloud
Carbone On-premise
Embedded Carbone JS
  v2.0+ 

:arrayJoin(separator, index, count)

NEW v4.12.0+

Flatten an array of String or Number

Params Description Type
separator [optional] item separator (, by default) String
index [optional] select items from this array index. Number
count [optional] number of items to select from index. count can be a negative number to select N items from the end of the array. Number

Examples

{d.value:arrayJoin()} // input: ["homer","bart","lisa"] → output: "homer, bart, lisa"
{d.value:arrayJoin(' | ')} // input: ["homer","bart","lisa"] → output: "homer | bart | lisa"
{d.value:arrayJoin('')} // input: ["homer","bart","lisa"] → output: "homerbartlisa"
{d.value:arrayJoin()} // input: [10,50] → output: "10, 50"
{d.value:arrayJoin()} // input: [] → output: ""
{d.value:arrayJoin()} // input: null → output: null
{d.value:arrayJoin()} // input: {} → output: {}
{d.value:arrayJoin()} // input: 20 → output: 20
{d.value:arrayJoin()} // input: undefined → output: undefined
{d.value:arrayJoin('', 1)} // input: ["homer","bart","lisa"] → output: "bartlisa"
{d.value:arrayJoin('', 1, 1)} // input: ["homer","bart","lisa"] → output: "bart"
{d.value:arrayJoin('', 1, 2)} // input: ["homer","bart","lisa"] → output: "bartlisa"
{d.value:arrayJoin('', 0, -1)} // input: ["homer","bart","lisa"] → output: "homerbart"

:arrayMap(objSeparator, attSeparator, attributes)

v0.12.5+

Flatten an array of objects

It ignores nested objects and arrays. If you want to access nested objects, use aggStr instead.

Params Description Type
objSeparator [optional] object separator (, by default) String
attSeparator [optional] attribute separator (: by default) String
attributes [optional] list of object's attributes to print String

Examples

{d.value:arrayMap()} // input: [{"id":2,"name":"homer"},{"id":3,"name":"bart"}] → output: "2:homer, 3:bart"
{d.value:arrayMap(' - ')} // input: [{"id":2,"name":"homer"},{"id":3,"name":"bart"}] → output: "2:homer - 3:bart"
{d.value:arrayMap(' ; ', '|')} // input: [{"id":2,"name":"homer"},{"id":3,"name":"bart"}] → output: "2|homer ; 3|bart"
{d.value:arrayMap(' ; ', '|', 'id')} // input: [{"id":2,"name":"homer"},{"id":3,"name":"bart"}] → output: "2 ; 3"
{d.value:arrayMap()} // input: [{"id":2,"name":"homer","obj":{"id":20},"arr":[12,23]}] → output: "2:homer"
{d.value:arrayMap()} // input: ["homer","bart","lisa"] → output: "homer, bart, lisa"
{d.value:arrayMap()} // input: [10,50] → output: "10, 50"
{d.value:arrayMap()} // input: [] → output: ""
{d.value:arrayMap()} // input: null → output: null
{d.value:arrayMap()} // input: {} → output: {}
{d.value:arrayMap()} // input: 20 → output: 20
{d.value:arrayMap()} // input: undefined → output: undefined

:count(start)

v1.1.0+

Count and print row number of any array

Usage example: d[i].id:count() will print a counter of the current row no matter the value of id

This formatter is replaced internally by :cumCount since version v4.0.0

Params Description Type
start Number to start with (default: 1) String