---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/llms.txt

# Collection

Расширяет [ICollection](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/ICollection.md), [collection.Item](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md).

Базовая реализация коллекции объектов на карте.

## Конструктор {#constructor}

```javascript
Collection([options])
```

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `options` | — | Тип: Object

Опции коллекции. ||
|#

**Пример:**

```javascript
// Пример реализации собственного меню на основе наследования от Collection.
var bind = ymaps.util.bind,
    map = new ymaps.Map(
        'map', {
            center: [55.819543, 37.611619],
            zoom: 6
        }
    ),
// Создаем собственный класс дочернего элемента меню.
    MenuItem = function (data, options) {
        MenuItem.superclass.constructor.call(this, options);
        // Создаем менеджер данных.
        // Если первым аргументом передали строчку, то обрачиваем её в хеш.
        this._data = new ymaps.data.Manager((typeof data == 'string') ? { content: data } : data);
        this._$content = null;
    };

// Наследуем MenuItem от collection.Item.
ymaps.util.augment(MenuItem, ymaps.collection.Item, {
    onAddToMap: function (map) {
        MenuItem.superclass.onAddToMap.call(this, map);
        var parentDomContainer = this.getParent().getChildElement(this);
        this._$content = $('<div class="menuItem"></div>').appendTo(parentDomContainer);
        // Создаем слушателя изменения поля 'content' в _data.
        this._dataMonitor = new ymaps.Monitor(this._data);
        this._dataMonitor.add('content', this._applyContent, this);
        this._applyContent(this._data.get('content', ''));
        // Пример использования менеджера событий domEvent.manager.
        this._eventsGroup = ymaps.domEvent.manager.group(this._$content[0]);
        this._eventsGroup.add('click', function () {
            this.events.fire('click');
        }, this);
    },

    onRemoveFromMap: function () {
        this._$content.remove();
        this._dataMonitor.removeAll();
        this._eventsGroup.removeAll();
        MenuItem.superclass.onRemoveFromMap.call(this);
    },

    getData: function () {
        return this._data;
    },

    _applyContent: function (newValue) {
        this._$content.text(newValue);
    }
});

// Создаем собственный класс меню.
var Menu = function (options) {
    Menu.superclass.constructor.call(this, options);
    this._$content = null;
};

// Наследуем Menu от Collection.
ymaps.util.augment(Menu, ymaps.Collection, {
    onAddToMap: function (map) {
        Menu.superclass.onAddToMap.call(this, map);
        var parentDomContainer = this.getParent().getChildElement(this);
        this._$content = $('<div class="menu"></div>').appendTo(parentDomContainer);
    },

    onRemoveFromMap: function () {
        this._$content.remove();
        Menu.superclass.onRemoveFromMap.call(this);
    },

    getChildElement: function (chilElement) {
        return this._$content;
    }
});

// Пример использования пользовательского элемента управления "Меню".
var menu = new Menu(),
    menuItem1 = new MenuItem('Пункт 1'),
    menuItem2 = new MenuItem({content: 'Второй пункт'}),
    menuItem3 = new MenuItem('Третий пункт');

menu.add(menuItem1);
menu.add(menuItem2);
menu.add(menuItem3);
map.controls.add(menu, {top: 5, left: 5});
// Изменяем данные в первом пункте меню.
menuItem1.getData().set('content', 'Первый пункт');
// Удаляем последний пункт из меню.
menu.remove(menuItem3);

// Можно прослушивать события не каждого отдельного элемента, а сразу всей коллекции.
menu.events.add('click', function (event) {
    // Запрашиваем порядковый номер элемента, который проинициировал событие.
    console.log('menu item #' + menu.indexOf(event.get('target')));
});
```
#|
|| **Имя** | **Тип** | **Описание** ||
|| [events](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IEventEmitter.md#events) | [IEventManager](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IEventManager.md) | Менеджер событий.

Унаследовано от [IEventEmitter](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IEventEmitter.md#events). ||
|| [options](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/ICustomizable.md#options) | [IOptionManager](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IOptionManager.md) | Менеджер опций.

Унаследовано от [ICustomizable](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/ICustomizable.md#options). ||
|#

## События {#events}

#|
|| **Имя** | **Описание** ||
|| [add](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#event-add) | Произошло добавление дочернего объекта. Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• child - добавленный дочерний элемент. ||
|| [mapchange](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IParentOnMap.md#event-mapchange) | Сменилась карта. Поля данных:
• oldMap - старая карта;

• newMap - новая карта.

Унаследовано от [IParentOnMap](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IParentOnMap.md#event-mapchange). ||
|| [optionschange](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/ICustomizable.md#event-optionschange) | Изменение в опциях объекта.

Унаследовано от [ICustomizable](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/ICustomizable.md#event-optionschange). ||
|| [parentchange](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IChild.md#event-parentchange) | Сменился родительский объект.

Поля данных:

• oldParent - старый родитель;
• newParent - новый родитель.

Унаследовано от [IChild](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IChild.md#event-parentchange). ||
|| [remove](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#event-remove) | Произошло удаление дочернего объекта. Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• child - удаленный дочерний элемент. ||
|#

## Методы {#method}

#|
|| **Имя** | **Возвращает** | **Описание** ||
|| [add](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#add)([child](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#add-param-child)) | [Collection](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md) | Добавляет элемент в коллекцию. ||
|| [each](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#each)([callback](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#each-param-callback), [context](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#each-param-context)) | [Collection](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md) | Вызывает функцию-обработчик для всех элементов коллекции. ||
|| [filter](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#filter)([filterFunction](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#filter-param-filterFunction)) | Object[] | Вызывает функцию-фильтр для всех элементов коллекции. При возвращении фильтром ненулевого значения элемент коллекции попадает в конечный массив. ||
|| [get](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#get)([index](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#get-param-index)) | Object | Returns элемент коллекции или null, если номер находится вне диапозона номеров коллекции. ||
|| [getAll](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#getAll)() | Object[] | Returns массив со всеми элементами коллекции. ||
|| [getIterator](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#getIterator)() | [IIterator](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IIterator.md) | Returns итератор для перебора элементов коллекции. ||
|| [getLength](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#getLength)() | Number | Returns количество элементов коллекции. ||
|| [getMap](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md#getMap)() | [Map](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Map.md) | Returns карту, которой принадлежит элемент коллекции.

Унаследован от [collection.Item](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md#getMap). ||
|| [getParent](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md#getParent)() | [IParentOnMap](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IParentOnMap.md) | Returns родительский объект.

Унаследован от [collection.Item](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md#getParent). ||
|| [indexOf](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#indexOf)([childToFind](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#indexOf-param-childToFind)) | Number | Returns порядковый номер объекта в коллекции либо -1, если объект не найден. ||
|| [onAddToMap](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md#onAddToMap)([map](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md#onAddToMap-param-map)) |  | Функция, которая вызывается при добавлении элемента на карту. Для выполнения дополнительных действий при добавлении объекта на карту переопределите эту функцию.

Унаследован от [collection.Item](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md#onAddToMap). ||
|| [onRemoveFromMap](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md#onRemoveFromMap)() |  | Функция, которая вызывается при удалении элемента с карты. Для выполнения дополнительных действий при удалении объекта с карты переопределите эту функцию.

Унаследован от [collection.Item](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md#onRemoveFromMap). ||
|| [remove](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#remove)([child](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#remove-param-child)) | [Collection](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md) | Удаляет элемент из коллекции. ||
|| [removeAll](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md#removeAll)() | [Collection](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Collection.md) | Удаляет все элементы из коллекции. ||
|| [setParent](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md#setParent)([parent](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md#setParent-param-parent)) | [collection.Item](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md) | Устанавливает родителя для заданного элемента коллекции.

Унаследован от [collection.Item](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md#setParent). ||
|#

## Описание событий {#description-events}

### add

Произошло добавление дочернего объекта. Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• child - добавленный дочерний элемент.

### remove

Произошло удаление дочернего объекта. Экземпляр класса [Event](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Event.md). Имена полей, доступных через метод Event.get:

• child - удаленный дочерний элемент.

## Описание методов {#description-methods}

### add

```javascript
{Collection} add(child)
```

Добавляет элемент в коллекцию.

**Returns** ссылку на себя.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `child`[*](*parametr) | — | Тип: [collection.Item](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md)

Элемент, который необходимо добавить. ||
|#

\* Обязательный параметр/опция.

### each

```javascript
{Collection} each(callback, context)
```

Вызывает функцию-обработчик для всех элементов коллекции.

**Returns** ссылку на себя.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `callback`[*](*parametr) | — | Тип: Function

Функция-обработчик. На вход получает элемент коллекции. При возвращении функцией значения false перебор останавливается. ||
|| `context`[*](*parametr) | — | Тип: Object

Контекст вызываемой функции. ||
|#

\* Обязательный параметр/опция.

### filter

```javascript
{Object[]} filter(filterFunction)
```

Вызывает функцию-фильтр для всех элементов коллекции. При возвращении фильтром ненулевого значения элемент коллекции попадает в конечный массив.

**Returns** массив из элементов, которые попали в выборку.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `filterFunction`[*](*parametr) | — | Тип: Function

Функция, которая является фильтром для объектов коллекции. Первым параметром принимает элемент из коллекции. Должна возвращать булевое значение. ||
|#

\* Обязательный параметр/опция.

### get

```javascript
{Object} get(index)
```

**Returns** элемент коллекции или null, если номер находится вне диапозона номеров коллекции.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `index`[*](*parametr) | — | Тип: Number

Порядковый номер элемента в коллекции. ||
|#

\* Обязательный параметр/опция.

### getAll

```javascript
{Object[]} getAll()
```

**Returns** массив со всеми элементами коллекции.

### getIterator

```javascript
{IIterator} getIterator()
```

**Returns** итератор для перебора элементов коллекции.

### getLength

```javascript
{Number} getLength()
```

**Returns** количество элементов коллекции.

### indexOf

```javascript
{Number} indexOf(childToFind)
```

**Returns** порядковый номер объекта в коллекции либо -1, если объект не найден.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `childToFind`[*](*parametr) | — | Тип: Object

Искомый объект. ||
|#

\* Обязательный параметр/опция.

### remove

```javascript
{Collection} remove(child)
```

Удаляет элемент из коллекции.

**Returns** ссылку на себя.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `child`[*](*parametr) | — | Тип: [collection.Item](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/collection.Item.md)

Элемент, который необходимо удалить. ||
|#


\* Обязательный параметр/опция.

### removeAll

```javascript
{Collection} removeAll()
```

Удаляет все элементы из коллекции.

**Returns** ссылку на себя.

[*parametr]:Обязательный параметр/опция.
