Поэлементная обработка структур
Выполняет заданную функцию для каждого элемента массива (если задан массив) или каждого поля объекта (если задан объект) в отдельности. Значения, полученные в результате выполнения этой функции помещаются в новый массив и возвращаются как результат работы функции. Имеет два варианта использования:
Выполняет функцию callback для каждого элемента массива array в отдельности. В callback передаются 2 параметра: элемент массива elem и его порядковый номер index.
Отличие от предыдущей версии состоит в том, что вместо массива может быть задан объект. В этом случае, в callback в качестве второго параметра будет передаваться ключ обрабатываемого поля объекта.
Начиная с jQuery-1.6, функция $.map() может работать не только с массивами но и с объектами. Надо отметить, что под массивами подразумеваются не только стандартные массивы javascript, но и массивоподобные объекты. Под ними понимаются javascript-объекты, обладающие свойством length и реализующие обращение к элементам объекта по индексам от 0 до length-1 (obj[i]). К таким объектам относится например объект jQuery.
Заданная в качестве второго параметра $.map() функция callback, будет вызываться отдельно, для каждого элемента заданного массива или объекта. Из возвращенных ей значений будет составлен массив — результат работы функции $.map(). callback в свою очередь может возвращать следующие значения:
- обычное значение: объект, строка, число и.т.д. Оно станет одним из элементов возвращаемого массива.
- null. В этом случае, в возвращаемый массив ничего не будет добавлено.
- массив значений. Каждый элемент этого массива будет станет отдельным элементом возвращаемого массива.
Примеры
Каждому элементу массива прибавим 4:
$.map( [0,1,2], function(n){ return n + 4; }); // результатом будет массив [4, 5, 6]
Оставим только те элементы массива, значение которых не является строкой:
$.map( [0, "one", 2], function(val){ if(typeof(val) != 'string') return val; return null; }); // результатом будет массив [0, 2]
На каждый элемент массива будем возвращать его самого, плюс копию умноженную на 10:
$.map( [0, 1, 2], function(n){ return [n, n*10]; }); // результатом будет массив [0, 0, 1, 10, 2, 20]