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 :

Javascript, array et index


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Par défaut Javascript, array et index
    Bonjour,

    Peut-on affecter les tableaux javascript avec la même liverté qu'en PHP ?

    C'est à dire :

    var a=new Array(3);

    a[12]='toto';
    a[17]='titi';
    a[250]='titi';
    a[700]='titi';

    Est ce que les index sont gérés un par un après ce code ou se retrouve-t-on avec ne tableau de 701 éléments?

    J'ai fait quelques tests qui semblent dire que c'est possible mais j'ai rencontré des problèmes inexpliqués par la suite qui me font craindre que cela ne soit pas vraiment correct de faire ça (jardinage?).

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut
    Excellente question !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var a=new Array(4);
     
            a[12]='toto';
            a[17]='titi';
            a[250]='titi';
            a[700]='titi';
     
            alert(a.length);
    Ce code nous affiche 701 !!! Reste maintenant à savoir si il a réellement créé 701 cases ou non !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var a=new Array(4);
     
            a[12]='toto';
            a[17]='titi';
            a[250]='titi';
            a[700]='titi';
     
            alert(a[15]);
    Il nous retourne 'undefined' ce qui prouve bien que la 16e case du tableau n'a pas été créée, et il en est de même pour toutes les autres index (sauf les quatre initialisés), je pense plutôt à un "bug" de la propriétés length des tableaux ...

    Je n'ai rien trouvé à ce sujet dans les doc javascript (pour l'instant)

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut
    Dans l'excellente doc de Mozilla Developper Center, on a ceci :

    http://developer.mozilla.org/en/docs..._Objects:Array

    Dans cette page (en anglais) on nous explique que le fait d'indexer "à la main" un tableau va influer sur le length. Voici leur exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    colors = new Array();
    colors[99] = "midnightblue";
    length = 100
    Par contre il ne disent pas comment remédier à cela (si ce n'est de bien respecter les index, préférez array.push())

  4. #4
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    var a=new Array();

    a['12']='toto';
    a['17']='titi';
    a['250']='titi';
    a['700']='titi';

    alert(a.length);
    +
    parseInt

  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
    ce problème est traité dans la FAQ ...
    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
    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
    De notre excellent ami Javatwister dasn la FAQ :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <script type="text/javascript">
     
    var tab = new Array();
     
    tab["un"] = "valeur de un";
    tab["un"] = "valeur de un"; // définition doublée volontairement
    tab["deux"] = "valeur de deux";
    tab["deux"] = "valeur de trois"; // redéfinition volontaire
    tab[44] = "valeur de 44"; // indice numérique
     
     
     
    function tabinfo(){
    	var lg=0;
    	var lignes="";
     
    	for (ind in this){
    		if(this.hasOwnProperty(ind)){	
    			// seules les propriétés uniques 
    			// et non héritées seront retenues
    			lg++;
    			lignes+='cle: ' + ind + ' ==> valeur: ' + this[ ind] + "\n";
    		}
    	}
     
    	return  "ce tableau contient " + lg + " lignes:\n\n" + lignes;
    }
     
    Array.prototype.info=tabinfo;
     
     
    alert( tab.info())
     
    </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 !

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut
    Très bon code, en effet. Merci SpaceFrog...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Par défaut
    Merci bien, j'ai passé le sujet à [résolu].

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

Discussions similaires

  1. [Smarty] variable array et index
    Par bastien dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/01/2010, 22h23
  2. variable javascript dans l'index de :eq
    Par jaljal dans le forum jQuery
    Réponses: 2
    Dernier message: 25/10/2009, 16h42
  3. [AJAX] AJAX - Javascript - array
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/05/2008, 17h16
  4. javascript array > éviter doublons
    Par taffMan dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/12/2007, 11h56
  5. [javascript]pb propriété indexé
    Par david06600 dans le forum Struts 1
    Réponses: 2
    Dernier message: 06/03/2007, 10h13

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