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 :

Amélioration : chaine vers tableau associatif


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 201
    Par défaut Amélioration : chaine vers tableau associatif
    Bonjour,

    Je voudrais extraite le contenu d'une chaine (couple clé/valeur) et ensuite mettre le résultat dans une table HTML.

    Voici ici mon code, est-ce qu'il y a mieux/plus simple et plus rapide ?

    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
     
     
    var test = "val1:012,val2:456";
     
    var theval = new Array();
    test = test.split(',');
     
    	for(var i in test)
    {
    	var p = test[i].split(':');
    	theval[p[0]] = p[1];
    }
     
    for (var i in theval) {
    	alert(i+'='+theval[i]);
    // Construction de la table HTML ici ??
    }
    Merci

  2. #2
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var montest = "val1:012,val2:456";
     
    temptab=montest.split(',')
    finaltab=new Array()
    var i=-1;
    while(temptab[++i]){
    subsplit=temptab[i].split(':')
    finaltab[subsplit[0]]=subsplit[1]
    }
    alert(finaltab.val1)
    ça revientau même, mais il doit etre possible de faire un JSON.parse pour les navigateurs qui le supportent ...
    sinon un eval

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var montest = "val1:12,val2:456";
    montest="{"+ montest.replace(/(^|,)([^:]+)(?=\:)/g,'$1"$2"')+"}"
    alert(montest)
    final=eval("(function(){return " + montest + ";})()");
    alert(final.val1)
    à noter que 012 => 10 ( javascript retourne l'octal )
    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 !

  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 : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Si tu as la possibilité de modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var test = "val1:012,val2:456";
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var test = '"val1":12,"val2":456';
    ou en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var test = '"val1":"012","val2":456';
    ,
    alors le plus simple sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(JSON.parse(test));
    et au passage,
    chaine vers tableau associatif
    les tableaux associatifs n'existent pas en JavaScript, il n'existe que des tableaux indicés ou des objets !
    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
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Si tu as la possibilité de modifier
    var test = "val1:012,val2:456";

    en
    var test = '"val1":12,"val2":456';
    C'est ce que fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    montest="{"+ montest.replace(/(^|,)([^:]+)(?=\:)/g,'$1"$2"')+"}"
    en ajoutant des {} autour
    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 !

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

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Je suis surpris que personne n'ait encore pensé à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var test = "val1:012,val2:456";
     
    var regexp = /([^:]+):([^,]*),?/g;
    var assoc = {};
     
    var match;
    while (match = regexp.exec(test)) {
    	assoc[match[1]] = match[2];
    }
    C'est, à quelques détails près, la méthode que j'emploie souvent pour examiner les cookies.

    Après, pour construire un tableau, c'est un peu fastidieux mais c'est faisable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var $table = document.createElement("table");
    for (var name in assoc) {
    	var $row = $table.insertRow(-1);
     
    	var $nameCell = $row.insertCell(-1);
    	$nameCell.appendChild(document.CreateTextNode(name));
     
    	var $valueCell = $row.insertCell(-1);
    	$valueCell.appendChild(document.CreateTextNode(assoc[name]));
    }
    Note : attention à ne pas utiliser la boucle for (... in ...) avec de vrais tableaux, elle n'est pas cohérente si le prototype de Array a été modifié (par exemple avec les bibliothèques Prototype et MooTools).
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. transformer un tableau associatif en php vers xml
    Par imen.m dans le forum Langage
    Réponses: 6
    Dernier message: 13/06/2013, 15h47
  2. Export tableau associatif vers script externe JS
    Par Dhyâna dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/10/2011, 21h47
  3. tableau associatif chaine
    Par avigeilpro dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 14/05/2011, 19h18
  4. [PHP 5.2] Générer une chaine sql via un tableau associatif
    Par beegees dans le forum Langage
    Réponses: 5
    Dernier message: 11/04/2010, 19h36
  5. Réponses: 8
    Dernier message: 13/11/2009, 14h50

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