[API](/solutions/geotoolkit/geotoolkit_js/apis/readme) / [geotoolkit](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit) / [util](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.util) / [iterator](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.util.iterator) / TwoWayArrayIterator

# Class: TwoWayArrayIterator<T&gt;

[util](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.util).[iterator](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.util.iterator).TwoWayArrayIterator

This abstract class defines the interface of a readonly Iterator. Subclasses are responsible for implementing the actual iteration mechanism.

## Type parameters

| Name |
|  --- |
| `T` |


## Hierarchy

- [`Iterator`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator)<`T`&gt;
↳ **`TwoWayArrayIterator`**


## Table of contents

Constructors
- [new TwoWayArrayIterator<T&gt;(a)](/solutions/geotoolkit/GeoToolkit_JS/apis/classes/geotoolkit.util.iterator.twowayarrayiterator.md#new twowayarrayiterator<t>(a))


Methods
| [current](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#current) | [filter](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#filter) | [forEach](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#foreach) |
|  --- | --- | --- |
| [getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#getclassname) | [hasNext](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#hasnext) | [hasPrev](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#hasprev) |
| [next](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#next) | [prev](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#prev) | [reset](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#reset) |
| [toArray](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#toarray) | [awaitForEach](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#awaitforeach) | [getArrayIterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#getarrayiterator) |
| [getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#getclassname-1) | [getIterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#getiterator) | [toArray](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator#toarray-1) |


## Contents

Constructors
#### new TwoWayArrayIterator&lt;T&amp;gt;(a)

• **new TwoWayArrayIterator**<`T`&gt;(`a`)

#### Type parameters

| Name |
|  --- |
| `T` |


#### Parameters

| Name  | Type  |
|  --- | --- |
| `a` | `T`[] |


#### Overrides

Iterator&lt;T&amp;gt;.constructor

Methods
#### current

▸ **current**(): `T`

#### Returns

`T`

#### filter

▸ **filter**(`f`): `T`[]

Returns the elements of an array that meet the condition specified in a callback function.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `f` | (`item`: `T`) => `boolean` | function to apply to each element |


#### Returns

`T`[]

#### Overrides

[Iterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator).[filter](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator#filter)

#### forEach

▸ **forEach**(`f`): [`TwoWayArrayIterator`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator)<`T`&gt;

Executes a method for each item in iterator and return new iterator.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `f` | (`item`: `T`) => `void` | function to apply to each element |


#### Returns

[`TwoWayArrayIterator`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator)<`T`&gt;

#### Overrides

[Iterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator).[forEach](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator#foreach)

#### getClassName

▸ **getClassName**(): `string`

#### Returns

`string`

#### Inherited from

[Iterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator).[getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator#getclassname)

#### hasNext

▸ **hasNext**(): `boolean`

Returns true if the iteration has more elements.

#### Returns

`boolean`

#### Overrides

[Iterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator).[hasNext](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator#hasnext)

#### hasPrev

▸ **hasPrev**(): `boolean`

#### Returns

`boolean`

#### next

▸ **next**(): `T`

Returns the next element in the iteration.

#### Returns

`T`

#### Overrides

[Iterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator).[next](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator#next)

#### prev

▸ **prev**(): `T`

#### Returns

`T`

#### reset

▸ **reset**(`element?`): [`TwoWayArrayIterator`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator)<`T`&gt;

Resets iterator to its initial state or to the specified element

**`Throws`**

if element was not found

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `element` | `T` | element |


#### Returns

[`TwoWayArrayIterator`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.twowayarrayiterator)<`T`&gt;

this

#### Overrides

[Iterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator).[reset](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator#reset)

#### toArray

▸ **toArray**(`maxElements?`): `T`[]

Creates array based on iterator items

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `maxElements` | `number` | array size upper limit |


#### Returns

`T`[]

#### Inherited from

[Iterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator).[toArray](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator#toarray)

#### awaitForEach

▸ `Static` **awaitForEach**<`T`&gt;(`array`, `func`, `callback?`): `void`

Runs asynchronous function for each element and wait execution

#### Type parameters

| Name |
|  --- |
| `T` |


#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `array` | `T`[] | [`Iterator`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator)<`T`&gt; | array of any object or iterator |
| `func` | (`x`: `T`, `next`: () => `void`) => `void` | function to apply to each element |
| `Optional` `callback` | () => `void` | function to be called at the end of execution |


#### Returns

`void`

#### Inherited from

[Iterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator).[awaitForEach](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator#awaitforeach)

#### getArrayIterator

▸ `Static` **getArrayIterator**<`T`&gt;(`array`, `func?`): [`Iterator`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator)<`T`&gt;

Returns iterator by array elements

#### Type parameters

| Name |
|  --- |
| `T` |


#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `array` | `T`[] | of any object |
| `Optional` `func` | (`item`: `T`) => `boolean` | to filter elements |


#### Returns

[`Iterator`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator)<`T`&gt;

#### Inherited from

[Iterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator).[getArrayIterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator#getarrayiterator)

#### getClassName

▸ `Static` **getClassName**(): `string`

#### Returns

`string`

#### Inherited from

[Iterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator).[getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator#getclassname-1)

#### getIterator

▸ `Static` **getIterator**<`T`&gt;(`parameter`): [`Iterator`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator)<`T`&gt;

Returns iterator by the data

#### Type parameters

| Name |
|  --- |
| `T` |


#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `parameter` | `T` | [`Iterator`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator)<`T`&gt; | `T`[] | data to iterate |


#### Returns

[`Iterator`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator)<`T`&gt;

#### Inherited from

[Iterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator).[getIterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator#getiterator)

#### toArray

▸ `Static` **toArray**<`T`&gt;(`iterator`, `maxElements?`): `T`[]

Creates array based on elements to iterate

#### Type parameters

| Name |
|  --- |
| `T` |


#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `iterator` | [`Iterator`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator)<`T`&gt; | iterator |
| `Optional` `maxElements` | `number` | array size upper limit |


#### Returns

`T`[]

#### Inherited from

[Iterator](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator).[toArray](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.iterator.iterator#toarray-1)