Поэлементная обработка структур

jQuery.map()

Выполняет заданную функцию для каждого элемента массива (если задан массив) или каждого поля объекта (если задан объект) в отдельности. Значения, полученные в результате выполнения этой функции помещаются в новый массив и возвращаются как результат работы функции. Имеет два варианта использования:

jQuery.map(array, callback(elem, index)):array1.0

Выполняет функцию callback для каждого элемента массива array в отдельности. В callback передаются 2 параметра: элемент массива elem и его порядковый номер index.

jQuery.map(arrayOrObj, callback(elem, indexOrKey)):array1.6

Отличие от предыдущей версии состоит в том, что вместо массива может быть задан объект. В этом случае, в 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]

Ссылки

Поисковые ключи:
  • вызов функции для каждого элемента массива
  • выполнить функцию для каждого элемента массива
  • map()
  • $.map()