# jQuery.map()

## jQuery.map ( array, callback( elementOfArray, indexInArray ) ) Returns: Array version added: 1.0

- array
  Type: Array
  The Array to translate.

- callback( elementOfArray, indexInArray )
  Type: Function
  The function to process each item against. The first argument to the function is the array item, the second argument is the index in array The function can return any value. Within the function, this refers to the global (window) object.

## jQuery.map ( arrayOrObject, callback( value, indexOrKey ) ) Returns: Array version added: 1.6

- arrayOrObject
  Type:
  The Array or Object to translate.

- callback( value, indexOrKey )
  Type: Function
  The function to process each item against. The first argument to the function is the value; the second argument is the index or key of the array or object property. The function can return any value to add to the array. A returned array will be flattened into the resulting array. Within the function, this refers to the global (window) object.

Description: Translate all items in an array or object to new array of items.

If you wish to process a jQuery object — for example, `$('div').map( callback );` — use .map() instead.

The `$.map()` method applies a function to each item in an array or object and maps the results into a new array. Prior to jQuery 1.6, `$.map()` supports traversing arrays only. As of jQuery 1.6 it also traverses objects.

Array-like objects — those with a `.length` property and a value on the `.length - 1` index — must be converted to actual arrays before being passed to `$.map()`. The jQuery library provides $.makeArray() for such conversions.

    // The following object masquerades as an array.
    var fakeArray = { "length": 2, 0: "Addy", 1: "Subtracty" };

    // Therefore, convert it to a real array
    var realArray = $.makeArray( fakeArray )

    // Now it can be used reliably with $.map()
    $.map( realArray, function( val, i ) {
      // Do something
    });

The translation function that is provided to this method is called for each top-level element in the array or object and is passed two arguments: The element's value and its index or key within the array or object.

The function can return:

- the translated value, which will be mapped to the resulting array
- `null` or `undefined`, to remove the item
- an array of values, which will be flattened into the full array

## Examples:

#### Example: Use $.map() to change the values of an array.

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>css demo</title>

      <style>

      div {
        color: blue;
      }
      p {
        color: green;
        margin: 0;
      }
      span {
        color: red;
      }

      </style>

      <script src="//code.jquery.com/jquery-1.10.2.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>

#### Demo:

#### Example: Map the original array to a new one and add 4 to each value.

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

#### Example: Map the original array to a new one, adding 1 to each value if it is bigger then zero and removing it if not.

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

#### Example: Map the original array to a new one; each element is added with its original value and the value plus one.

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

#### Example: Map the original object to a new array and double each value.

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

#### Example: Map an object's keys to an array.

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

#### Example: Map the original array to a new one; each element is squared.

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

#### Example: Map the original array to a new one, removing numbers less than 50 by returning null and subtracting 45 from the rest.

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

#### Example: Augment the resulting array by returning an array inside the function.

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