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 :

Recherche objet dans un tableau


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Points : 249
    Points
    249
    Par défaut Recherche objet dans un tableau
    Bonjour,

    Je suis plus ou moins débutant en javascript OO

    J'ai un tableau d'objets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var obj = [
       {
          "type":"max",
          "id": "ad1",
          "name": "Name 1"
       }, {
          "type":"som",
          "id":"ad2",
          "name":"Name 2"
       },{
          "type":"bin",
          "id": "ad3",
          "name": "Name 3"
       }]

    Je cherche l'objet du tableau dont j'ai l'id :
    Est ce possible sans faire une fonction qui fasse une boucle ?
    Est ce que je m'y prend bien (type de conteneur) ?

    Merci pour votre aide.

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Pourtant c'est tout simple est ça mériterais d'y réfléchir un petit peu ...
    Ton tableau json il manque un ] a la fin donc tu peux tourner en rond pour que ça marche suffit de checker sur un site online pour savoir si ton json est valide ou pas ce qui t'évitera de testé et de cherché l'erreur la ou elle ne se trouve pas ...


    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
     
    var obj = [
       {
          "type":"max",
          "id": "ad1",
          "name": "Name 1"
       }, {
          "type":"som",
          "id":"ad2",
          "name":"Name 2"
       },{
          "type":"bin",
          "id": "ad3",
          "name": "Name 3"
       }];
     
      alert(obj[1].id); //affiche ad2

  3. #3
    Membre actif Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Points : 249
    Points
    249
    Par défaut
    Merci pour cette réponse, mais c'est le chemin inverse que je cherche à faire :
    (désolé j'avais oublié de copier le dernier ]

    J'ai déjà ad2.
    Je cherche alors l'objet du tableau. Pour le moment je fais une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $.each(objArray, function(objNumber, obj) {
          if ("ad2" == obj.id)
             return obj
       })
    est ce que je peux faire mieux ?
    Plus OO ?

  4. #4
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Si c'est sans boucle ça aurait été obj[1] sinon en une boucle :

    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
     
    var obj = [
       {
          "type":"max",
          "id": "ad1",
          "name": "Name 1"
       }, {
          "type":"som",
          "id":"ad2",
          "name":"Name 2"
       },{
          "type":"bin",
          "id": "ad3",
          "name": "Name 3"
       }];
     
    for(var i in obj){
      if(obj[i].id === 'ad2')
        console.log(obj[i]);
    }

  5. #5
    Membre actif Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Points : 249
    Points
    249
    Par défaut
    ok, merci pour ton aide.

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Bonjour,
    pourquoi ne pas utiliser la méthode filter() : Array.prototype.filter()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var result = obj.filter(elem => elem.id === 'ad2');
    console.log(result);

  7. #7
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Je viens de comprendre pourquoi je ne l'utilisait pas , j'ai une VM windows 7 et un IE8 sauf que lui n'a pas encore implémenté cette fonctionnalité (mise a part un polyfill) et je viens de voir qu'elle était compatible nativement depuis la version IE9. Sous linux debian jessie pas de soucis.
    Je pense que je suis en mode old school sachant que cette fonction est très performante, ça serait dommage de ne pas l'utiliser, merci d'avoir dépoussiéré mon intervention .

Discussions similaires

  1. Rechercher un objet dans un tableau d'objet
    Par mikaelm dans le forum Ruby
    Réponses: 6
    Dernier message: 11/06/2007, 17h58
  2. Probleme copie d'objet dans un tableau
    Par ché dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 13/12/2006, 12h15
  3. [Debutant] Stocker des objets dans un tableau à plusieurs indices
    Par Invité dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 27/09/2006, 18h04
  4. Réponses: 23
    Dernier message: 10/01/2006, 13h33
  5. Réponses: 6
    Dernier message: 05/01/2006, 14h23

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