# `arrayInsertAt`

## Description

Returns a new array with an element inserted at the specified position.

- The element type must match the array type.
- Supported element types include `string`, `bool`, `number`, `interval`, `timestamp`, `regexp`, and `enum`.

## Syntax

Like many functions in DataPrime, `arrayInsertAt` supports [two notations](https://coralogix.com/docs/dataprime/language-reference/functions-reference/index.md), **function** and **method** notation. These interchangeable forms allow flexibility in how you structure expressions.

```dataprime
arrayInsertAt(array: array<T>, position: number, value: T): array<T>
```

```dataprime
(array: array<T>).arrayInsertAt(position: number, value: T): array<T>
```

## Arguments

| Name     | Type   | Required | Description                                      |
| -------- | ------ | -------- | ------------------------------------------------ |
| array    | array  | **true** | The array to modify                              |
| position | number | **true** | The index at which to insert the new element     |
| value    | T      | **true** | The element to insert, must match the array type |

## Example

**Use case: Insert an item into the middle of a queue**

Suppose you have a list of jobs but notice one is missing. Consider the following input:

```json
{
    "values": ["Job 1", "Job 2", "Job 4"]
}
```

By inserting `'Job 3'` at position `2`, you restore the intended sequence of jobs.

### Example query

```dataprime
replace values with arrayInsertAt(values, 2, 'Job 3')
```

```dataprime
replace values with values.arrayInsertAt(2, 'Job 3')
```

### Example output

The result will include the new element at the specified index:

```json
{
    "values": ["Job 1", "Job 2", "Job 3", "Job 4"]
}
```
