Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tableaux nommés

Chrome est différent !

Sujet résolu
    4 novembre 2010 à 2:40:18

    Bonjour,
    Voici mon problème :

    J'ai besoin d'une fonction qui prend un tableau en paramètre. La fonction retourne un objet. Les attributs de cet objet sont les éléments du tableau (et les valeurs valent X ça n'est pas important).

    Exemple :
    var T = [102, 104, 100, 101, 103];
    
    var f = function(tableau) {
       ...
    };
    
    f(T); // résultat attendu : {102: X, 104:X, 100:X, 101:X, 103:X}
    


    Voilà comment j'ai codé ma fonction :
    var f = function(tableau) {
       var i;
       var r = {}:
       for (i in tableau) {
          r[tableau[i]] = 'X';
       }
       return r;
    };
    


    Ce code foncionne sous IE, Firefox ...
    Mais sous Chrome, l'objet retourné a ses attributs triés !
    J'obtiens : {100:X, 101:X, 102:X, 103:X, 104:X} au lieu de {102: X, 104:X, 100:X, 101:X, 103:X}
    Et c'est embêtant car j'ai besoin de parcourir mon objet dans le bon ordre avec un for i in ...

    Y a-t-il un moyen simple de palier ce problème ?
    Merci !
    • Partager sur Facebook
    • Partager sur Twitter
      4 novembre 2010 à 3:12:08

      Bonsoir,

      Ce problème arrive seulement sous Chrome, mais c'est un comportement normal, car l'ordre d'insertion dans un tableau associatif en JavaScript n'est pas conservé (selon les spécifications).

      À ma connaissance, pour régler ce problème, tu dois trier le contenu de ton tableau explicitement pour obtenir l'ordre que tu désires.

      Espérant que cela puisse t'aider.
      • Partager sur Facebook
      • Partager sur Twitter
        4 novembre 2010 à 3:13:38

        Deux choses.

        Premièrement on ne parcours pas un tableau avec for/in, mais avec une boucle for classique.

        Ensuite, par définition, un objet n'a pas d'ordre...


        EDIT : Une solution peut être de parcourir l'Array afin de déterminer l'ordre des propriétés de l'objet.
        • Partager sur Facebook
        • Partager sur Twitter
          5 novembre 2010 à 14:59:43

          Effectivement il suffit de parcourir T tout simplement ... ;)
          • Partager sur Facebook
          • Partager sur Twitter

          Tableaux nommés

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown