Spec-Zone.ru › jQuery

jQuery.map()

jQuery.map( array, callback )Возвращает: Массив

Описание: Преобразовать все элементы в массиве или объекте в новый массив элементов.

  • версия добавлена: 1.0jQuery.map( array, callback )

    • array
      Тип: ArrayLikeObject
      Массив или похожий на массив объект для преобразования.
    • callback
      Тип: Функция( Объект elementOfArray, Целое число indexInArray ) => Объект
      Функция для обработки каждого элемента. Первый аргумент функции — элемент массива, второй — его индекс. Функция может возвращать любое значение. Возвращенный массив будет сглажен в результирующий массив. Внутри функции this ссылается на глобальный объект (window).
  • версия добавлена: 1.6jQuery.map( object, callback )

    • object
      Тип: Объект
      Объект, не похожий на массив, для преобразования.
    • callback
      Тип: Функция( Объект propertyOfObject, Строка key ) => Объект
      Функция для обработки каждого элемента. Первый аргумент функции — значение; второй — ключ свойства объекта. Функция может возвращать любое значение для добавления в массив. Возвращенный массив будет сглажен в результирующий массив. Внутри функции, this ссылается на глобальный (window) объект.

Если вы хотите обработать объект jQuery — например, $('div').map( callback ); — используйте .map() вместо этого.

Метод $.map() применяет функцию к каждому элементу в массиве или объекте и отображает результаты в новый массив. До jQuery 1.6 $.map() поддерживает только прохождение по массивам и похожим на массивы объектам. Начиная с jQuery 1.6 он также обрабатывает объекты.

Подобные массивам объекты — те, которые имеют свойство .length и значение на индексе .length - 1 — могут быть переданы в $.map().

// The following object is array-like.
var fakeArray = { "length": 2, 0: "Addy", 1: "Subtracty" };
 
// It can be used reliably with $.map()
$.map( realArray, function( val, i ) {
  // Do something
});

Функция преобразования, которая предоставляется этому методу, вызывается для каждого верхнего уровня элемента в массиве или объекте и получает два аргумента: значение элемента и его индекс или ключ в массиве или объекте.

Функция может возвращать:

  • преобразованное значение, которое будет отображено в результирующем массиве
  • null или undefined, чтобы удалить элемент
  • массив значений, который будет сглажен в полный массив

Примеры:

Использование $.map() для изменения значений массива.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery.map demo</title>
  <style>
  div {
    color: blue;
  }
  p {
    color: green;
    margin: 0;
  }
  span {
    color: red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<div></div>
<p></p>
<span></span>
 
<script>
var arr = [ "a", "b", "c", "d", "e" ];
$( "div" ).text( arr.join( ", " ) );
 
arr = jQuery.map( arr, function( n, i ) {
  return ( n.toUpperCase() + i );
});
$( "p" ).text( arr.join( ", " ) );
 
arr = jQuery.map( arr, function( a ) {
  return a + a;
});
$( "span" ).text( arr.join( ", " ) );
</script>
 
</body>
</html>

Демо:

Преобразование исходного массива в новый и добавление 4 к каждому значению.

$.map( [ 0, 1, 2 ], function( n ) {
  return n + 4;
});

Результат:

[4, 5, 6]

Преобразование исходного массива в новый, добавление 1 к каждому значению, если оно больше нуля, и удаление, если нет.

$.map( [ 0, 1, 2 ], function( n ) {
  return n > 0 ? n + 1 : null;
});

Результат:

[ 2, 3 ]

Преобразование исходного массива в новый; к каждому элементу добавляется его исходное значение и значение плюс один.

$.map( [ 0, 1, 2 ], function( n ) {
    return [ n, n + 1 ];
});

Результат:

[ 0, 1, 1, 2, 2, 3 ]

Преобразование исходного объекта в новый массив и удвоение каждого значения.

var dimensions = { width: 10, height: 15, length: 20 };
dimensions = $.map( dimensions, function( value, index ) {
  return value * 2;
});

Результат:

[ 20, 30, 40 ]

Преобразование ключей объекта в массив.

var dimensions = { width: 10, height: 15, length: 20 };
var keys = $.map( dimensions, function( value, key ) {
  return key;
});

Результат:

[ "width", "height", "length" ]

Преобразование исходного массива в новый; каждый элемент возводится в квадрат.

$.map( [ 0, 1, 2, 3 ], function( a ) {
  return a * a;
});

Результат:

[ 0, 1, 4, 9 ]

Преобразование исходного массива в новый, удаление чисел меньше 50, возвращая null и вычитание 45 из остальных.

$.map( [ 0, 1, 52, 97 ], function( a ) {
  return (a > 50 ? a - 45 : null);
});

Результат:

[ 7, 52 ]

Увеличение результирующего массива путем возвращения массива внутри функции.

var array = [ 0, 1, 52, 97 ];
array = $.map( array, function( a, index ) {
  return [ a - 45, index ];
});

Результат:

[ -45, 0, -44, 1, 7, 2, 52, 3]

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquery.com/jQuery.map

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API