IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Méthode filter de l'objet array


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut Méthode filter de l'objet array
    Bonjour,

    J'essaie de faire fonctionner ce petit programme sur IE 8 et j'ai un message d'erreur

    "Cet objet ne gère pas cette propriété ou cette méthode"

    La Méthode filter de l'objet array est-elle compatible avec IE 8

    Voici le script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function isBigEnough(element, index, array) {   
      return (element >= 10);   
    }   
    var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    filter est propriétaire ffx ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <script type="text/javascript">
    function isBigEnough(value,limit){
    return (value>limit)
    }
     
    Array.prototype.MyFilter=function(filtre) {   
    var temparray=new Array();
    var i=0
    while(this[i++]){
    alert(filtre(this[i-1],10))
    if (filtre( this[i-1],10)){temparray.push(this[i-1])}
    }  
    return temparray;
    }
     
    var filtered = new Array(12, 5, 8, 130, 44).MyFilter(isBigEnough);  
     
    alert(filtered)</script>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Pour être un tout petit peu plus précis , filter est défini dans JavaScript 1.6, pas encore implémenté par certains navigateurs dont IE, et partiellement par d'autres, dont Chrome.

    ERE

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Par défaut
    Pour être encore plus précis et rigoureux je conseille de prendre l'implémentation filter fournie sur le site de MDC :
    https://developer.mozilla.org/en/Cor...s/Array/filter

    et d'autre part l'appeler filter et non myfilter, en testant si cette methode existe sur Array.prototype comme le fait MDC.
    Ci dessous le code fourni dans le lien indiqué ci-dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    if (!Array.prototype.filter)
    {
      Array.prototype.filter = function(fun /*, thisp*/)
      {
        var len = this.length >>> 0;
        if (typeof fun != "function")
          throw new TypeError();
     
        var res = [];
        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;
      };
    }
    Donc spacefrog je te conseille de plutôt indiquer cet exemple que le tiens qui même s'il reste correct ne permettra pas d'utiliser filter tel qu'il est normé dans javascript 1.6

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    N.B. je ne cherchais pas à émuler le filter, mais juste proposer une solution repondant à la question filtrer un array avec une fonction > 10
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Inactif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    N.B. je ne cherchais pas à émuler le filter, mais juste proposer une solution repondant à la question filtrer un array avec une fonction > 10
    Tu me copieras 100x :
    Je ne dois pas mettre de majuscule au nom de ma méthode.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    justement moi je préfère MyFilter
    au moins c'est pas ambigu, c'est pas natif ..
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Inactif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    justement moi je préfère MyFilter
    au moins c'est pas ambigu, c'est pas natif ..
    Quand on met une majuscule c'est pour désigner une classe. Mais surtout pas pour désigner une fonction ou la méthode d'une classe.

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Accadémiquement, et ce ne sont que des conventions de casse ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Inactif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Accadémiquement, et ce ne sont que des conventions de casse ...
    Convention de programmation surtout

    package : commence par une minuscule
    Classe : commence par une majuscule
    methode ou fonction ou variable : commence par une minuscule
    CONSTANTE : tout en majuscule

    Ca c'est en général hein, après dans d'autres langages peut etre qu'ils y a d'autres méthodes. Mais quand déjà tu appliques ça, c'est déja bien :o

    si ces conventions ont été faites c'est justement pour qu'on se retrouve pas avec une souple illisible à chaque fois que quelqu'un reprendre le code d'un autre.

  11. #11
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Citation Envoyé par Gsnalf Voir le message
    Convention de programmation surtout
    package : commence par une minuscule
    Classe : commence par une majuscule
    methode ou fonction ou variable : commence par une minuscule
    CONSTANTE : tout en majuscule

    (...)
    Toutes ces histoires de conventions deviennent hors sujet dans ce post. A la limite tu en crées un nouveau, mais avant tout, prendre connaissance de ce qui a été débattu dans le post "Bonnes pratiques de Javascript" où sont abordés ces sujets, la notation hongroise, camelcase etc...

    ERE

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut
    Bonjour,

    et merci pour toutes ces précisions.

    Je ne pensais cependant pas déclarer "la guerre des conventions" en postant cette question.

    Merci encore. A bientôt pour une question...plus consensuelle.

  13. #13
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par michelp3 Voir le message
    A bientôt pour une question...plus consensuelle.
    Aucun problème : la question n'est pas en cause

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] ajout méthodes sur l'objet Array
    Par kimcharlene dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/04/2008, 16h40
  2. [c#] Méthode d'accès aux objets de ma form1
    Par SDuh dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/03/2006, 11h21
  3. [VBA-E]La méthode 'Range' de l'objet '_Global' a échoué
    Par repié dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/02/2006, 16h00
  4. Réponses: 4
    Dernier message: 20/01/2006, 15h53
  5. Méthode Free d'un objet
    Par WebPac dans le forum Composants VCL
    Réponses: 3
    Dernier message: 12/10/2004, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo