.jQuery.map()

jQuery.map ( array callback(elementOfArray, indexInArray) )

jQuery.map ( arrayOrObject callback( value, indexOrKey ) )

.jQuery.map()

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

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": 1, 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

Example : A couple examples of using .map()

<!DOCTYPE html>
<html>
<head>
<style>
div { color:blue; }
  p { color:green; margin:0; }
  span { color:red; }
</style>
<script src='http://code.jquery.com/jquery-latest.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>

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

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
</head>
<body>

<script>
$.map( [0,1,2], function(n){
   return n + 4;
 });
</script>
</body>
</html>

Example : Maps the original array to a new one and adds 1 to each value if it is bigger then zero, otherwise it's removed.

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
</head>
<body>

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

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

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
</head>
<body>

<script>
$.map( [0,1,2], function(n){
   return [ n, n + 1 ];
 });
</script>
</body>
</html>

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

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
</head>
<body>

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

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

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
</head>
<body>

<script>
var dimensions = { width: 10, height: 15, length: 20 },
    keys = $.map( dimensions, function( value, index ) {
      return index;
    });
</script>
</body>
</html>

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

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
</head>
<body>

<script>
$.map( [0,1,2,3], function (a) { 
  return a * a; 
});
</script>
</body>
</html>

Example : Remove items by returning null from the function. This removes any numbers less than 50, and the rest are decreased by 45.

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
</head>
<body>

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

Example : Augmenting the resulting array by returning an array inside the function.

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
</head>
<body>

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