---
source: https://carbone.io/documentation/design/formatters/array.html
title: "Array manipulation"
description: "List of functions to manipulate and transform your JSON arrays"
generated_at: "2026-07-08"
---

# 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_

```javascript
{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_

```javascript
{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 |

## Related topics

- [Text Formatting](/documentation/design/formatters/text.md)
- [How formatters work](/documentation/design/formatters/overview.md)
- [Number Formatting](/documentation/design/formatters/number.md)
- [Interval and Duration](/documentation/design/formatters/interval.md)
- [Date Formatting](/documentation/design/formatters/date.md)
- [Currency Formatting](/documentation/design/formatters/currency.md)
