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 :

Tester si une variable est dans une liste de valeurs


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Points : 133
    Points
    133
    Par défaut Tester si une variable est dans une liste de valeurs
    Bonjour à tous,

    Ma question bête du début de la semaine
    Je créé des filtres sur un JSON, basés sur ses propriétés.
    Par exemple : var data_rouge = data.filter(function(data) { return data.couleur == 'rouge' }).

    J'aimerais créer un filtre basé sur plusieurs valeurs de propriétés.
    Mais je ne sais pas comment écrire proprement cela.

    Par exemple, si je fais :
    var data_rouge_bleu_vert = data.filter(function(data) { return data.couleur == 'rouge' | data.couleur == 'bleu' | data.couleur == 'vert'}),
    ça marche, mais je n'aime pas trop cette répétition.
    En SQL (où je suis bien plus à l'aise qu'en Javascript ), je fais ce genre de requête WHERE couleur IN ('rouge', 'bleu', 'vert').
    Y a-t-il un équivalent en JS ? (je suppose qu'il faut creuser du côté des array, mais pour l'instant je ne trouve pas...)

    Je vous avais dit que me question était toute bête !

    Merci d'avance à celui ou celle qui me fera progresser !

    Bonne journée.

    Sylvain

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    indexOf() ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Points : 133
    Points
    133
    Par défaut
    Merci (à nouveau ! ) de te pencher sur mon fil, jreaux62.
    J'étais effectivement aussi arrivé à cette fonction.
    Mais je ne vois vraiment pas comment la mettre en place dans mon exemple.

    Je suppose qu'il faut que je commence par créer mon array :
    var mescouleurs = ['rouge', 'bleu', 'vert'];Mais ensuite, je ne comprends pas comment utiliser la fonction indexOf() sur cet array... (mais c'est certainement lié au fait que je ne comprends pas très bien le fonctionnement de Array.filter() )

    Quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var data_rouge_bleu_vert = data.filter(function(data) { return mescouleurs.indexOf(data.couleur) >= 1})
    Pas encore testé : tu penses que je suis sur la bonne voie ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Les index commencent à 0 (zéro).

    Il faut écrire ici : != -1

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Points : 133
    Points
    133
    Par défaut
    Je n'avais pas vu ta réponse, et je venais d'arriver à cette même conclusion !
    Merci à toi !!

  6. #6
    Invité
    Invité(e)
    Par défaut
    A priori, on doit même pouvoir écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var data_rouge_bleu_vert = data.filter(function(data) { return ['rouge','bleu','vert'].indexOf(data.couleur) != -1})

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

Discussions similaires

  1. [PHP 5.3] Comment savoir si une string est dans une variable
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 29/10/2011, 15h08
  2. Réponses: 0
    Dernier message: 15/11/2009, 17h40
  3. Réponses: 9
    Dernier message: 23/06/2009, 10h54
  4. Réponses: 4
    Dernier message: 17/12/2007, 14h46
  5. Réponses: 4
    Dernier message: 17/12/2007, 14h46

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