# gleam/javascript/array

# Types

# Functions

```
pub fn fold(
over over: Array(a),
from from: b,
with with: fn(b, a) -> b,
) -> b
```

Reduces a list of elements into a single value by calling a given function on each element, going from left to right.

`fold(from_list([1, 2, 3]), 0, add)`

is the equivalent of
`add(add(add(0, 1), 2), 3)`

.

Runs in linear time.

```
pub fn fold_right(
over over: Array(a),
from from: b,
with with: fn(b, a) -> b,
) -> b
```

Reduces a list of elements into a single value by calling a given function on each element, going from right to left.

`fold_right(from_list([1, 2, 3]), 0, add)`

is the equivalent of
`add(add(add(0, 3), 2), 1)`

.

Runs in linear time.

`pub fn from_list(a: List(a)) -> Array(a)`

Convert a Gleam list to a JavaScript array.

Runs in linear time.

`pub fn get(a: Array(a), b: Int) -> Result(a, Nil)`

Get the element at the given index.

# Examples

```
> get(from_list([2, 4, 6]), 1)
Ok(4)
```

```
> get(from_list([2, 4, 6]), 4)
Error(Nil)
```

`pub fn map(a: Array(a), with with: fn(a) -> b) -> Array(b)`

Returns a new array containing only the elements of the first array after the function has been applied to each one.

Runs in linear time.

# Examples

```
> map(from_list([2, 4, 6]), fn(x) { x * 2 })
from_list([4, 8, 12])
```

`pub fn size(a: Array(a)) -> Int`

Get the number of elements in the array.

Runs in constant time.