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

Contributions JavaScript / AJAX Discussion :

Comment déclarer et initialiser un tableau ? [À relire] [FAQ]


Sujet :

Contributions JavaScript / AJAX

  1. #1
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut Comment déclarer et initialiser un tableau ?
    http://javascript.developpez.com/faq...eaux#DeclarTab

    Beaucoup de réflexions personnelles pour ma première relecture :
    • D'abord, je propose de mettre en commun les parties « déclaration d'abord » / « déclaration avec les valeurs en paramètres », et de mettre la syntaxe des crochets en premier dans chacune de ces deux parties, car je trouve que cette syntaxe reflète mieux l'esprit de JS. J'ai hésité un peu car j'imagine que tout le monde n'est pas du même avis, mais ça me plaît comme ça.
    • Du coup, ça m'a amené à remanier à peu près tout le contenu. J'ai tenté de retirer un maximum de mots compliqués et/ou pas forcément utiles.
    • Ensuite, quelques document.write qui traînent… Dois-je les remplacer par des alert, universels mais contraignants, ou par des console.log, plus pratiques mais pas forcément accessibles au débutant ? Je propose d'ajouter un lien vers une Q/R sur l'utilisation de la console, Q/R dont l'apparition ne sauraît tarder
    • De plus, je viens de lire dans un autre topic que nous allions devoir nous mettre d'accord sur la mise en forme des noms en dehors du code. Pour l'instant, j'ai l'impression qu'aucun choix n'a été fait, du coup je choisis codeinline (sauf dans les titres).
    • Finalement, j'ai corrigé les balises <script> qui avaient des attributs en trop, et remplacé les types MIME par "application/javascript". Après tout, il faut s'attendre à ce que les bouts de code de cette FAQ se retrouvent dans de nombreux sites web faits par des débutants, alors autant fournir du code moderne, pas vrai ?


    Voici ma proposition de correction :
    1. En le déclarant d’abord

    On déclare d’abord le tableau avec des crochets [], ou bien avec new Array(). Ces deux syntaxes sont équivalentes. Ensuite, on remplit le tableau indice par indice.

    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var semaine = new Array();
    puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    semaine[0] = "dimanche";
    semaine[1] = "lundi";
    semaine[2] = "mardi";
    semaine[3] = "mercredi";
    semaine[4] = "jeudi";
    semaine[5] = "vendredi";
    semaine[6] = "samedi";
    Notez que le plus grand indice correspond à la taille du tableau - 1 (le premier indice étant toujours 0).

    Il est possible de préciser la taille initiale du tableau si on utilise la syntaxe Array :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var semaine = new Array(7);
    2. En passant les valeurs en paramètres

    On peut aussi remplir le tableau en même temps qu’on le déclare, en passant les données en paramètres à l'intérieur des crochets ou des parenthèses.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var semaine = ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"];
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var semaine = new Array("dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi");
    Exemple :
    Le script suivant affiche la valeur de semaine à l'indice 2 : "mardi".
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <script type="application/javascript">
    var semaine = ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"];
    console.log(semaine[2]);
    </script>

    Notez que dans chacun des exemples ci-dessus, le premier indice est toujours 0 (zéro) et ce peu importe la méthode utilisée pour déclarer le tableau.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut


    Ce sera bien du <codeinline> en dehors des balises.

    Arf, d'habitude je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">
    Je pense qu'il y a parfois des soucis avec application.

    Bonne idée de créer des Q/R sur l'utilisation de la console et le débogage. Je ne sais plus qui m'en parlait (toi peut-être ?).
    Bon maintenant, que choisir entre alert ou console...

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    A l'heure du HTML5, l'attribut type n'est plus obligatoire
    Mais sinon, moi aussi je suis favorable à text/javascript.

    Ceci dit, est-il vraiment nécessaire de mettre les balises <script> dans les exemples ? Il s'agit d'une FAQ JavaScript, il n'y a pas, sauf nécessité, à mettre de balises HTML.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Je trouve que cette explication porte à confusion. Je pense que le débutant en Javascript veut savoir deux choses à propos des tableaux :
    - comment créer un tableau associatif (clé/valeur)
    - comment créer un tableau simple (indexé)

    Cette FAQ porte à confusion, surtout pour remplir le tableau : semaine[0] = "dimanche"; on devrait plutôt "enseigner" semaine.push("dimanche");. La façon dont c'est fait, j'ai l'impression que le débutant va penser qu'il remplit un tableau associatif, non un tableau simple (indexé).

    Exemple de ce qu'on voit souvent chez les débutants qui utilisent, à tort, les tableaux comme des tableaux associatifs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var mauvais_tableau_associatif = new Array();
    mauvais_tableau_associatif["un"] = "toto";
    mauvais_tableau_associatif["deux"] = "titi";
    mauvais_tableau_associatif["trois"] = "tata";
     
    for (i in mauvais_tableau_associatif) 
      console.log(i);
     
    console.log(mauvais_tableau_associatif.length); // 0
    Remplacez Array, par RegExp, Boolean, Number, etc et ça fonctionnera vu que tout est objet.

    Je pense qu'il faut insister sur ce coté.

    Proposition de correction :
    1. Tableau simple (indexé)
    1.1 Déclarer et peupler
    Il y a deux façons de déclarer et de peupler un tableau indexé :
    • var tableau_simple = ['premier', 'deuxième', 'troisième'];
    • var tableau_simple = new Array('premier', 'deuxième', 'troisième');

    tableau_simple, est donc une instance de Array et contient tableau_simple.length (3) éléments allant de l'indice 0 à l'indice 2 : ['premier', 'deuxième', 'troisième'].
    On préférera la première méthode. On appelle ça une forme littérale.

    Une dernière méthode consiste à déclarer le tableau avec un seul paramètre : la taille de celui-ci (si elle est connue à l'avance). Certains navigateurs améliorent ainsi les performances.
    • var tableau_simple = new Array(3);

    tableau_simple, est donc une instance de Array et contient tableau_simple.length (3) éléments vide allant de l'indice 0 à l'indice 2 : [undefined, undefined, undefined].

    1.2 Ajouter des éléments
    • tableau_simple.push('quatrieme');
    • tableau_simple[3] = 'quatrieme';

    tableau_simple contient maintenant tableau_simple.length (4) éléments allant de l'indice 0 à l'indice 3 : ['premier', 'deuxième', 'troisième', 'quatrieme'].
    On préférera la première méthode. La deuxième permettant de modifier un élément du tableau s'il y en a déjà un à cet indice, ou en ajouter un s'il n'y en a pas.
    Attention, si on ajoute un élément à l'indice 99 (tableau_simple[99] = '100ème';) de ce tableau, la taille (tableau_simple.length) sera alors de 100 et il y aura 95 éléments vides entre l'indice 4 et l'indice 98. (["premier", "deuxième", "troisième", "quatrieme", undefined × 95, "100ème"])

    1.3 Lire les éléments
    Vous l'aurez compris, pour accéder au 4ème élément, il faut lire le troisième indice car la numérotation commence à 0.
    • tableau_simple[3]; // quatrieme

    Pour savoir si un indice contient un élément :
    • 3 in tableau_simple; // true
    • 199 in tableau_simple; // false

    Le plus intéressant étant de boucler sur les éléments, voici les différentes méthodes.

    La manière "sûre" qui fonctionne sur tous les navigateurs, sur les tableaux indexés uniquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (var i = 0; i < tableau_simple.length ; i++)
      console.log('Indice ' + i + ' contient ' + tableau_simple[i]);
    // Cela affichera donc les 100 éléments, et affichera "undefined" pour les indices n'ayant aucun élément
    Utiliser une méthode "récente", qui ne fonctionne pas partout (seulement IE > 9, Firefox > 1.5) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tableau_simple.forEach(
      function (element, indice){
    	console.log('Indice ' + indice + ' contient ' + element);
      });
    // Attention /!\ Cela n'affichera pas les "trous" du tableau, dû à la création de l'élément 99 qui les a généré
    1.4 BONUS ! Avoir conscience des "trous"
    On vient de le voir, les méthodes d'itération (forEach, map) n'affichent pas les éléments "trou". En effet, un tableau (Array) peut avoir des trous et être ainsi "clairsemé".
    Pour créer des trous, c'est simple :
    • var tableau_a_trous = [ , , 'trois' ];
    • delete tableau_simple[3]; // suppression d'un élément à un indice précis, sans pour autant réorganiser le tableau et donc, créer un trou
    • tableau_a_trous.length = 1000; // cela va créer des trous jusqu'à l'indice 999
    • tableau_a_trous[1500] = 'dvp'; // comme vu précédemment, cela va combler les indices manquants jusqu'à 1499 par des trous
    • var tableau_a_trous = new Array(3); // cela va créer trois trous

    Pour savoir si un indice contient un "trou", faire simplement 3 in tableau_a_trous; // false si il y a un trou à l'indice 3.

    Attention, saisir undefined comme élément n'est pas considéré comme un trou !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var tableau_trous = [ , , 'trois' ];
    var tableau_dense = [ undefined, undefined, 'trois' ];
     
    0 in tableau_trous; // false
    0 in tableau_dense; // true
    2. Tableau associatif
    Bien qu'il y ait un constructeur de tableau indexé (Array), il n'y a pas pour autant de constructeur de tableau associatif. En effet, il faut utiliser le constructeur d'objet global : Object.
    /!\ Attention, length est une propriété interne de Array. Les tableaux associatifs en Javascript n’ont donc pas cette propriété.
    Un Object c'est un tableau de clés (ou propriétés) auxquelles sont associées des valeurs. Cela en fait donc un tableau associatif.

    2.1 Déclarer et peupler
    Il y a deux façons de créer et peupler un tableau associatif :
    • var tableau_associatif = {nom: 'Eich', prenom: 'Brendan', age: 52};
    • Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      var tableau_associatif = new Object();
      tableau_associatif.nom = 'Eich';
      tableau_associatif.prenom = 'Brendan';
      tableau_associatif.age = 52;

    tableau_associatif, est donc une instance de Object et contient plusieurs propriétés ayant chacune une valeur. A noter, qu'il n'y a pas de variable interne de "longueur". Il faudra la récupérer autrement.
    On préférera la première méthode. On appelle ça une forme littérale.

    Ouverture ES5 : Object.create().

    2.2 Ajouter des éléments
    • tableau_associatif.loveJS = true;
    • tableau_associatif["langages_preferes"] = ['js', 'java'];

    Ouverture ES5 : Object.defineProperty() et set.

    2.3 Lire les éléments
    • tableau_associatif.loveJS; // true
    • tableau_associatif["nom"]; // Eich

    Ouverture ES5 : Object.getOwnPropertyDescriptor(), get.

    La manière "sûre" qui fonctionne sur tous les navigateurs. Cela consiste à lire les propriétés appartenant à l'instance de l'objet (notre tableau associatif donc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (propriete in tableau_associatif) if (tableau_associatif.hasOwnProperty(propriete))
      console.log('Propriete ' + propriete + ' contient ' + tableau_associatif[propriete]);
    /* Cela affichera :
    Propriete nom contient Eich
    Propriete prenom contient Brendan
    Propriete age contient 52
    Propriete loveJS contient true
    Propriete langages_preferes contient js,java
    */
    Bon, en fait je me suis enflammé, cela pourra peut être répondre à plusieurs Q/R

    Qu'en pensez-vous ?

  5. #5
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    C'est une bonne idée d'avoir pensé à cette histoire de trous. En revanche, la question des tableaux associatifs n'aurait-elle pas sa place dans une autre entrée de la FAQ ?

    Sinon c'est un peu long en effet, et je me dis que le débutant n'a pas forcément envie de lire des mots comme constructeur ou instance. Quant à new Object(), je trouve personnellement que c'est une horreur. Pourquoi ne pas écrire simplement {} ? Le problème si on habitue les débutants à utiliser new, c'est qu'ils peuvent plus tard rencontrer des erreurs difficiles à cerner à cause d'un typeof qui ne donne pas le résultat attendu. C'est notamment probable avec les chaînes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typeof "" // "string"
    typeof new String() // "object"
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  6. #6
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Salut Watilin, merci de ton retour.

    En effet, il faudra que je découpe le tout en plusieurs points car cela répond à plusieurs éventuelles Q/R.

    J'ai donné à chaque fois plusieurs exemples pour parvenir au même résultat, mais avec la meilleure pratique (forme littérale).

    Pour les mots comme instance ou constructeur, je suis plutôt d'avis de distiller quelques mots de vocabulaire important qui sont quand même essentiels pour bien appréhender le langage, non ?

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 954
    Points : 44 095
    Points
    44 095
    Par défaut
    Bonjour,
    je penses effectivement que les "faq" doivent rester courte et concise, ce qui n'est pas toujours facile à réaliser, et qu'elle ne doivent traiter que d'un seul sujet à la fois, ce qui n'est également pas toujours simple au vu des incidences liées.

    Par contre pourquoi ne pas créer un article par ex: Allez plus loin avec les tableaux (Array)?

  8. #8
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    En effet, c'est une bonne idée ! Je dois contacter vermine ? Ou quelqu'un d'autre ?

    En attendant, une nouvelle version allégée, et une autre Q/R pour ajouter/modifier des éléments

    Comment déclarer et initialiser un tableau indexé ?
    Il y a deux façons de faire qui donnent le même résultat :
    • var tableau_simple = ['premier', 'deuxième', 'troisième'];
    • var tableau_simple = new Array('premier', 'deuxième', 'troisième');

    tableau_simple contient tableau_simple.length (3) éléments allant de l'indice 0 à l'indice 2 : ['premier', 'deuxième', 'troisième'].
    On préférera la première méthode. On appelle ça une forme littérale.

    Une dernière méthode consiste à déclarer le tableau avec un seul paramètre : la taille de celui-ci (si elle est connue à l'avance). Certains navigateurs améliorent ainsi les performances.
    • var tableau_simple = new Array(3);

    tableau_simple contient tableau_simple.length (3) éléments vides allant de l'indice 0 à l'indice 2 : [undefined, undefined, undefined].

    Pour aller plus loin : Attention à ne pas utiliser Array pour les tableaux associatifs

    Vous l'aurez compris, pour accéder au 4ème élément, il faut lire le troisième indice car la numérotation commence à 0.
    • tableau_simple[3]; // quatrieme

    Pour aller plus loin : Comment parcourir un tableau indexé
    Comment ajouter/modifier des éléments à un tableau indexé ?
    En partant du fait que tableau_simple est un tableau de cette forme : ['premier', 'deuxième', 'troisième']
    • tableau_simple.push('quatrieme');
    • tableau_simple[3] = 'quatrieme';

    tableau_simple contient maintenant tableau_simple.length (4) éléments allant de l'indice 0 à l'indice 3 : ['premier', 'deuxième', 'troisième', 'quatrieme'].
    On préférera la première méthode. La deuxième permettant de modifier un élément du tableau s'il y en a déjà un à cet indice, ou en ajouter un s'il n'y en a pas.

    Pour aller plus loin : Avoir conscience des "trous" dans les tableaux
    Source : MDN - Array

  9. #9
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 954
    Points : 44 095
    Points
    44 095
    Par défaut
    Citation Envoyé par Kaamo
    En effet, c'est une bonne idée ! Je dois contacter vermine ? ...
    effectivement, il te guidera, t'expliquera les démarches à suivre, les outils et le reste.

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Personnellement, je ne suis absolument pas favorable à introduire des notions de tableau indicé et surtout de tableau associatif.

    Dans la mesure où seuls les tableaux indicés existent en JavaScript, on ne devrait parler que de tableaux tout court et éviter de faire croire (notamment aux débutants que d'autres sortes de tableaux existent).

    On pourrait néanmoins faire une première Q/R indiquant cela :
    Que sont les tableaux en JavaScript ?
    Dans la plupart des langages de programmation, deux sortes de tableaux sont disponibles :
    • les tableaux indicés, dont les index correspondent au rang de l'élément dans le tableau (il s'agit donc de valeurs numériques commençant à 0) ;
    • les tableaux associatifs, dont les index correspondent à des identifiants (il s'agit donc de chaines de caractères libres).


    En JavaScript, seuls les tableaux indicés sont disponibles.
    Il est donc impossible de créer des tableaux associatifs, cependant, la notation des objets permet d'associer un identifiant à une valeur et donc d'obtenir une structure similaire à un tableau associatif, mais il faut bien comprendre que dans ce cas, les propriétés et méthodes spécifiques aux objets Array ne sont plus utilisables, en particulier la propriété length permettant d'obtenir la taille du tableau (le nombre d'entrées).
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    En effet, cela pourrait éviter les confusions.
    +1 pour cette Q/R en guise d'introduction !

  12. #12
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    A mon avis il manque quelque chose : les tableaux à plusieurs dimensions.

  13. #13
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Pourquoi pas une autre Q/R pour ça oui.

  14. #14
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Pour résumer. Voici deux Q/R pour répondre à la problématique : Comment déclarer et initialiser un tableau en Javascript ?

    Q/R 1 : Que sont les tableaux en JavaScript ?
    Dans la plupart des langages de programmation, deux sortes de tableaux sont disponibles :
    les tableaux indicés, dont les index correspondent au rang de l'élément dans le tableau (il s'agit donc de valeurs numériques commençant à 0) ;
    les tableaux associatifs, dont les index correspondent à des identifiants (il s'agit donc de chaines de caractères libres).

    En JavaScript, seuls les tableaux indicés sont disponibles.
    Il est donc impossible de créer des tableaux associatifs, cependant, la notation des objets permet d'associer un identifiant à une valeur et donc d'obtenir une structure similaire à un tableau associatif, mais il faut bien comprendre que dans ce cas, les propriétés et méthodes spécifiques aux objets Array ne sont plus utilisables, en particulier la propriété length permettant d'obtenir la taille du tableau (le nombre d'entrées).
    Q/R 2 : Comment déclarer et initialiser un tableau ?
    Il y a deux façons de faire qui donnent le même résultat :
    • var tableau_simple = ['premier', 'deuxième', 'troisième'];
    • var tableau_simple = new Array('premier', 'deuxième', 'troisième');

    tableau_simple contient tableau_simple.length (3) éléments allant de l'indice 0 à l'indice 2 : ['premier', 'deuxième', 'troisième'].
    On préférera la première méthode. On appelle ça une forme littérale.

    Une dernière méthode consiste à déclarer le tableau avec un seul paramètre : la taille de celui-ci (si elle est connue à l'avance). Certains navigateurs améliorent ainsi les performances.
    • var tableau_simple = new Array(3);

    tableau_simple contient tableau_simple.length (3) éléments vides allant de l'indice 0 à l'indice 2 : [undefined, undefined, undefined].

    Vous l'aurez compris, pour accéder au 3ème élément, il faut lire le deuxième indice car la numérotation commence à 0.
    tableau_simple[2]; // troisième
    Pour aller plus loin :
    Q/R sur les tableaux multi dimensions
    Q/R sur les façons de parcourir un tableau

  15. #15
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    J'ai dû mettre Developpez de côté mais j'espère pouvoir me re concentrer sur la rubrique et notamment sur la FAQ. Merci pour votre patience...

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par vermine Voir le message
    Bonjour,
    J'ai dû mettre Developpez de côté mais j'espère pouvoir me re concentrer sur la rubrique et notamment sur la FAQ. Merci pour votre patience...
    Oh mais tu ne crois pas que nous t'oublions, "ah que nenni"

    Du reste je vais surement relancer mon parrain d'ici peut (début Novembre)
    avec un moteur de Blog complet tout AJAX ...

    Allez a bientôt l'Ami

  17. #17
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Les contributions sont toujours les bienvenues. Je vais cependant devoir m'investir moins et compter le plus possible sur votre autonomie.

  18. #18
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Cette Q/R est toujours dans l'état [A relire]. Voici sur quoi on est resté : post7422601

    Commentaires ?

  19. #19
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Je procède chapitre par chapitre pour les mises en ligne. Ce qui n'empêche effectivement pas (merci Kamoo) d'avancer sur les autres chapitres. N'hésitez donc pas à continuer les discussions.

  20. #20
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par Kaamo Voir le message
    Cette Q/R est toujours dans l'état [A relire]. Voici sur quoi on est resté : post7422601

    Commentaires ?
    Avec 2 ans et demi de retard (), je plussoie la version de Kaamo, à part que je me demande si on ne doit pas dire « indexé » plutôt que « indicé ». Je sais que je vais passer pour un chipoteur mais ça sonne bizarre à mes oreilles, je n'ai pas trouvé de source satisfaisante validant l'utilisation du verbe « indicer », et pour moi c'est un néologisme.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Déclarer et initialiser un tableau en même temps
    Par ram-0000 dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 14/04/2012, 19h57
  2. Réponses: 7
    Dernier message: 30/01/2007, 09h48
  3. Comment déclarer un tableau de TextBox ?
    Par zappacosta dans le forum Visual C++
    Réponses: 2
    Dernier message: 01/11/2006, 22h51
  4. Réponses: 5
    Dernier message: 11/05/2006, 14h15
  5. Réponses: 35
    Dernier message: 14/02/2006, 18h57

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