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 :

Supprimer ligne dans un tableau


Sujet :

JavaScript

  1. #1
    Membre confirmé Avatar de Thewil
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2006
    Messages : 223
    Par défaut Supprimer ligne dans un tableau
    Salut à tous,

    J'ai déclarer un tableau javascript de la sorte var monTab = new Array()

    Il est rempli avec plusieurs éléments et en fait j'aimerai supprimer l'un d'entre eux.
    Donc pour cela je parcoure mon tableau et si je trouve l'élément mais c'est la que je bloque.
    J'ai vu les méthodes slice() ou splice() mais je ne vois pas trop comment ça marche et pas trop comment supprimer juste l'élément trouvé.

    Si qqun pouvait éclairer un peu ma lanterne.

    Merci

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var tonTab = [0, 1, 2, 3];
    tonTab.splice(2, 1);
    alert (tonTab);
    // affiche >>> [0, 1, 3]
    (lien vers la spécif)

  3. #3
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653

  4. #4
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    OMG
    Comment j'ai fait pour ne jamais tomber sur cet opérateur, moi ?

    Merci chomedu !

  5. #5
    Membre confirmé Avatar de Thewil
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2006
    Messages : 223
    Par défaut
    Merci de vos réponse. Aucune des deux manières n'est plus appropriée que l'autre ?

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    elle font la même chose mais différemment

  7. #7
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    faites attention quand même. delete et splice n'ont pas la même action

    - avec tab.splice(2,1) : [0,1,2,3] devient [0,1,3] où tab[2] = 3 et tab.length = 3
    - avec delete tab[2] : [0,1,2,3] devient [0,1,,3] où tab[2] n'existe pas et tab.length = 4 (la taille n'a pas changé!!!!!)

  8. #8
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    hummm effectivement :-/

    l'un détruit l'élément du tableau en laissant l'emplacement a vide ( null ?? )
    et l'autre détruit l'élément DANS le tableau en supprimant également la place.

    Merci pour les précisions BBS

  9. #9
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Alors un
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    delete tab[2];
    serait équivalent à
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    tab[2] = null;// voire même tab[2] = undefined;
    ?

    Ca me rappelle cette mini fonction que j'ai écrite il y a quelques jours pour rendre uniques toutes les valeurs d'un tableau (supprimer les valeurs en doublons), qui acceptait deux types d'appel : en conservant les "cases vides", ou en les supprimant :
    Code javascript : 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
     
    // FONCTION : supprime les doublons dans le tableau courant
    // PARAM #1 : "tassage" (booléen) : si "équivalent à TRUE", suppression des indices correspondants aux valeurs supprimées (pour éviter les "trous") 
    // RETOUR : tableau (construit à partir du tableau courant) 
    Array.prototype.singleton = function(tassage) {
       var val, resultat = this.cloner();
       for (var i = 0; i < resultat.length - 1; ++i) {
          for (var j = i + 1; j < resultat.length; ++j) {
             if (resultat[i] == resultat[j]) {
                if (tassage)
                   resultat.splice(j--, 1);
                else
                   resultat[j] = null;
             }
          }
       }
       return resultat;
    }

    (ps : la méthode Array.prototype.cloner() est une mini fonction maison pour copier un tableau par valeur et éviter de modifier le tableau de départ)

  10. #10
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    Alors un
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    delete tab[2];
    serait équivalent à
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    tab[2] = null;// voire même tab[2] = undefined;
    ?
    absolument pas. exemple (tiré de la doc du lien précédent) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var tonTab = [0, 1, 2, 3];
    tonTab[2] = undefined; // on a undefined à la position 2
    if (2 in tonTab) {
      alert ("undefined est le 2ème élément du tableau");
    }
    delete tonTab[2]; // la position 2 est supprimée
    if (!(2 in tonTab)) {
      alert ("undefined n'est pas dans le tableau. la position 2 n'existe pas");
    }

  11. #11
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    c'est justement la question que je me posais :

    delete != null != undefined = ????
    puisque la position n'existe plus MAIS est toujours présente dans le tableau
    empty ???

  12. #12
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Si une valeur supprimé avec un delete garde sa position et retourne undefined
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       <title></title>
       <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
       <style type="text/css">
       </style>
    </head>
    <body>
      <script type="text/javascript">
      var a = [0,1,2,3,4];
      var s = "";
      delete a[2];
      for (var i=0, imax=a.length;i<imax;i++){
        s += a[i] +" - ";
      }
      alert(s);
      </script>
    </body>
    </html>

Discussions similaires

  1. Supprimer ligne dans un tableau de cellules
    Par diego45 dans le forum MATLAB
    Réponses: 1
    Dernier message: 24/10/2014, 13h59
  2. [Tableaux] supprimer une ligne dans une tableau
    Par hadjiphp dans le forum Langage
    Réponses: 5
    Dernier message: 25/05/2009, 14h54
  3. Supprimer une ligne dans un tableau
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/06/2007, 15h14
  4. Réponses: 1
    Dernier message: 24/04/2007, 17h20
  5. supprimer une ligne dans un tableau
    Par sandball22 dans le forum C++Builder
    Réponses: 9
    Dernier message: 16/05/2006, 21h53

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