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 :

vider un tableau (array) multidimensionnel


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 20
    Par défaut vider un tableau (array) multidimensionnel
    Bonjour ,

    Quand j'ai un array à une dimension à vider je fais ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var tab1=new Array();
    tab1[0]='un';
    tab1[1]=2;
     
    tab1.length=0; /* vidage */
    à ce que je sais le garbage collector vide la zone mémoire allouée par le tableau


    Dans le cas d'un array multidimensionnel je me demande quelle est la meilleur façon de le vider

    pour l'exemple ce tableau multidimensionnel ,dans la réalité j'ai un tableau à plusieurs dimensions généré dynamiquement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var tab1=new Array();
    tab1[0]='un';
    tab1[1]=2;
    tab1[2]=new Array('one','two','three','four','etc...');
    tab1[3]=5;
    tab1[4]=1;
    tab1[5]=8;
    tab1[6]=new Array('uno','dos','tres','cuatro');
    tab1[7]='etc...';
    Est ce qu'il suffit de faire tab1.length=0; /* ce qui semble ne poser aucun problème */

    ou est t-il préférable de faire

    tab1[2].length=0;
    tab1[6].length=0;
    tab1.length=0;

    Merci pour vos réponses

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 20
    Par défaut
    à mon avis tab1.length=0; est amplement suffisant ,je vais faire comme ça

  3. #3
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par Edgar Voir le message
    à mon avis tab1.length=0; est amplement suffisant ,je vais faire comme ça
    je pense aussi.

    sans être un expert du js. pour moi à partir du moment où " tab1.length=0;" supprime les référence du tableau vers ses objets. si les objets cessent d'exister (ne sont pas sont référencés ailleurs, dans d'autres variables par exemple) le gestionnaire de mémoire de ton moteur js de ton navigateur est censé supprimer les objects qui ne sont plus référencés.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 20
    Par défaut
    Citation Envoyé par Willpower Voir le message
    à partir du moment où " tab1.length=0;" supprime les référence du tableau vers ses objets. si les objets cessent d'exister (ne sont pas sont référencés ailleurs, dans d'autres variables par exemple) le gestionnaire de mémoire de ton moteur js de ton navigateur est censé supprimer les objects qui ne sont plus référencés.
    c'est le raisonnement que je me faisais aussi

    Merci

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    j'aurais tendance à faire
    ce qui réinitialise l'objet, forcément;

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    comme on ne sait pas trop, enfin au moins moi, comment sont gérés ces libérations une méthode "clean" pourrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Array.prototype.erase = function(){
      while( this.length){
        this.pop();
      }
    }
    Attention :
    ne fonctionne pas avec les tableaux associatifs

  7. #7
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    comme on ne sait pas trop, enfin au moins moi, comment sont gérés ces libérations une méthode "clean" pourrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Array.prototype.erase = function(){
      while( this.length){
        this.pop();
      }
    }
    Attention :
    ne fonctionne pas avec les tableaux associatifs
    perso, j'aurai tendance à vouloir croire que le BA-ba du moteur javascript est intelligemment conçu et que par contre une boucle while risquerait de ralentir mon exécution.

    nb: mon avis n'est qu'intuitif, il est tout à fait possible que je me trompe.

    autrement pour compléter ton code je dirai même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Array.prototype.erase = function(deep){
      while( this.length){
        var e = this.pop();
        if(deep && (e instanceof Array))
          e.erase(true);
      }
    }

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    non non, je vous assure, réaffecter une variable provoque un coup de balai automatique de la valeur précédente;
    pas de prise de tête là-dessus!

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/04/2016, 00h52
  2. [Tableaux] Vider un tableau
    Par christel1982 dans le forum Langage
    Réponses: 11
    Dernier message: 22/03/2006, 11h08
  3. Comment vider un tableau de char ?
    Par Battosaiii dans le forum C
    Réponses: 5
    Dernier message: 18/03/2006, 17h42
  4. Tableau(Array) sans taill
    Par krfa1 dans le forum ASP
    Réponses: 4
    Dernier message: 21/09/2005, 22h31
  5. tableau array
    Par laclac dans le forum Langage
    Réponses: 8
    Dernier message: 01/09/2005, 11h04

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