JavaScript - Méthode du filtre Array ()

La description

Tableau Javascript filter() crée un nouveau tableau avec tous les éléments qui réussissent le test implémenté par la fonction fournie.

Syntaxe

Sa syntaxe est la suivante -

array.filter(callback[, thisObject]);

Détails des paramètres

  • callback - Fonction pour tester chaque élément du tableau.

  • thisObject - Objet à utiliser comme this lors de l'exécution du rappel.

Valeur de retour

Renvoie le tableau créé.

Compatibilité

Cette méthode est une extension JavaScript de la norme ECMA-262; en tant que tel, il peut ne pas être présent dans d'autres implémentations de la norme. Pour que cela fonctionne, vous devez ajouter le code suivant en haut de votre script.

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;
   };
}

Exemple

Essayez l'exemple suivant.

<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>

Production

Filtered Value : 12,130,44