JavaScript: método Array map ()

Descripción

Matriz de JavaScript map() El método crea una nueva matriz con los resultados de llamar a una función proporcionada en cada elemento de esta matriz.

Sintaxis

Su sintaxis es la siguiente:

array.map(callback[, thisObject]);

Detalles de los parámetros

  • callback - Función que produce un elemento del nuevo Array a partir de un elemento del actual.

  • thisObject - Objeto para usar como this al ejecutar la devolución de llamada.

Valor devuelto

Devuelve la matriz creada.

Compatibilidad

Este método es una extensión de JavaScript del estándar ECMA-262; como tal, puede que no esté presente en otras implementaciones del estándar. Para que funcione, debe agregar el siguiente código en la parte superior de su secuencia de comandos.

if (!Array.prototype.map) {
   Array.prototype.map = function(fun /*, thisp*/) {
      var len = this.length;
      
      if (typeof fun != "function")
      throw new TypeError();
      
      var res = new Array(len);
      var thisp = arguments[1];
      
      for (var i = 0; i < len; i++) {
         if (i in this)
         res[i] = fun.call(thisp, this[i], i, this);
      }
      return res;
   };
}

Ejemplo

Pruebe el siguiente ejemplo.

<html>
   <head>
      <title>JavaScript Array map Method</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         if (!Array.prototype.map) {
            Array.prototype.map = function(fun /*, thisp*/) {
               var len = this.length;
               
               if (typeof fun != "function")
               throw new TypeError();
               
               var res = new Array(len);
               var thisp = arguments[1];
               
               for (var i = 0; i < len; i++) {
                  if (i in this)
                  res[i] = fun.call(thisp, this[i], i, this);
               }
               return res;
            };
         }
         var numbers = [1, 4, 9];
         var roots = numbers.map(Math.sqrt);
         document.write("roots is : " + roots ); 
      </script>      
   </body>
</html>

Salida

roots is : 1,2,3