Функция $.map()

Определение и применение

Функция $.map() преобразует значения массива или объекта в новый массив. Она полезна при подготовке списка подписей, идентификаторов или нескольких выходных значений из одного исходного элемента.

Синтаксис

JavaScript
const values = $.map(array, function (value, index) { return transformed; });
const entries = $.map(object, function (value, key) { return transformed; });

Параметры и возвращаемое значение

Первый аргумент обработчика — значение, второй — индекс или ключ. Обычный результат добавляется в массив; null и undefined пропускаются. Возвращённый массив разворачивается на один уровень, позволяя одному входному элементу дать несколько результатов.

Возвращается обычный массив, исходный контейнер не изменяется. Для jQuery-коллекции существует отдельный метод .map() с другим порядком аргументов обработчика: индекс, элемент.

Особенности и совместимость

Поддержка массивов есть с 1.0, обычных объектов — с 1.6. Для объектов могут учитываться унаследованные перечисляемые свойства; если нужны только собственные, заранее подготовьте данные через Object.entries().

Array.prototype.map() сохраняет null и вложенные массивы. Поэтому он не всегда заменяет $.map() без изменений. Для сочетания преобразования и разворачивания можно рассмотреть flatMap(), явно задав правило пропуска.

Документация

Пример использования

Пропуск и разворачивание результата: попробуйте сами

Положительные числа дают по два значения, отрицательное пропускается. Результат: 2, 20, 3, 30. Используется jQuery 4.0.0.

index.html
HTML
<pre id="result"></pre>
main.js
JavaScript
const result = $.map([2, -1, 3], function (value) {
    if (value < 0) {
        return null
    }
    return [value, value * 10]
})
$('#result').text(result.join(', '))