JavaScript - Método de filtro de matriz ()

Descripción

Matriz de JavaScript filter() El método crea una nueva matriz con todos los elementos que pasan la prueba implementada por la función proporcionada.

Sintaxis

Su sintaxis es la siguiente:

array.filter(callback[, thisObject]);

Detalles de los parámetros

  • callback - Función para probar cada elemento de la matriz.

  • 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.filter) {
   Array.prototype.filter = function(fun /*, thisp*/) {
      var len = this.length;
      if (typeof fun != "function")
      throw new TypeError();
      
      var res = new Array();
      var thisp = arguments[1];
      for (var i = 0; i < len; i++) {
         if (i in this) {
            var val = this[i];   // in case fun mutates this
            if (fun.call(thisp, val, i, this))
            res.push(val);
         }
      }
      return res;
   };
}

Ejemplo

Pruebe el siguiente ejemplo.

<html>
   <head>
      <title>JavaScript Array filter Method</title>
   </head>
   
   <body>   
      <script type = "text/javascript">
         if (!Array.prototype.filter) {
            Array.prototype.filter = function(fun /*, thisp*/) {
               var len = this.length;
            
               if (typeof fun != "function")
               throw new TypeError();
            
               var res = new Array();
               var thisp = arguments[1];
            
               for (var i = 0; i < len; i++) {
                  if (i in this) {
                     var val = this[i];   // in case fun mutates this
                     if (fun.call(thisp, val, i, this))
                     res.push(val);
                  }
               }
               return res;
            };
         }
         function isBigEnough(element, index, array) {
            return (element >= 10);
         }
         var filtered  = [12, 5, 8, 130, 44].filter(isBigEnough);
         document.write("Filtered Value : " + filtered ); 
      </script>      
   </body>
</html>

Salida

Filtered Value : 12,130,44