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 :

Object avec clés 'userdefined'


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par défaut Object avec clés 'userdefined'
    Bonjour

    J'ai des objets dont les noms de clés sont définies soit par des noms entrés par l'utilisateur, soit par des noms de fichiers.
    Par exemple mes données de fichiers extraites par FileReader() sont stockées comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    object: {
      fichier.extension: donnée,
      ..
    }
    Ma question est simple : quel traitement faut-il faire sur ces noms pour remplacer les espaces / caractères non-autorisés de façon fiable ?

    Par rapport à un tableau d'objets (avec une clé 'name') ce stockage permet de référencer les données beaucoup plus facilement, pourtant j'ai un vague doute sur la fiabilité de ce système ... Selon vous est ce que ça risque de poser d'autres problèmes par la suite ?

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    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 094
    Par défaut
    Si tu as moyen de rajouter des guillemets, ça passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    object: {
      "fichier.extension": donnée,
      ..
    }
    Sinon il faut que tu construises l'objet étape par étape :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var myObject = {};
    var cle = ...; // le nom défini par l'utilisateur
    myObject[cle] = donnee;
    ...
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par défaut
    Les noms de clés sont des variables donc je construis 'étape par étape'.

    Je voulais juste savoir :
    - laisser des clés d'objets avec espace ne posera pas de problème ?
    - comment filtrer/encoder les caractères non autorisés (le nom peut aussi être directement entré par l'utilisateur) ?

    En vous remerciant par avance

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    un objet est en gros une hashmap
    un tableau clef valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    obj ={};
    obj[macle]=mavaleur;
    console.log(obj[macle]);(
    pour que ça marche il suffit que macle soit un élément convertible en string donc soit une string soit un objet possédant la méthode toString
    si tu as des nom de clef avec des . comme fichier.nom fichier.extension
    perso je ferais plutôt un split pour avoir au final
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    obj = {
      fichier: {
        nom : "toto",
        extension: "txt"
      }
    }
    A+JYT

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par défaut
    Ok, oui je peux garder juste le nom du fichier sans extension.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    obj = {
      fichier: {
        nom : "toto",
        extension: "txt"
      }
    }
    Justement cet objet ne me permet pas de récupérer directement obj['toto'], c'est la raison pour laquelle je mets le nom du fichier (avec ou sans extension) comme clé : ça évite d'itérer pour chercher une entrée.

    Il est vrai que le js a l'air cool avec les noms de clés et me laisse par exemple écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    object= {
      'az;,?*+ /!#:§' : 2
    }
    Encore une fois les noms/clés peuvent ensuite être renommées par l'utilisateur, donc potentiellement avec n'importe quoi ... Vous me confirmez que même dans ce cas il n'y a aucun caractère particulier à filtrer ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Nop, tout va bien dans le meilleur des mondes avec JavaScript et les String:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var js_objects = {
         '❤️':"unicode",
         '(╯°□°)╯︵ ┻━┻': "flip da table",
         'ᕙ༼ ,,ԾܫԾ,, ༽ᕗ': 'js is the best'
    };
     
    js_objects["❤️"]
    edit: on ne peut pas en dire autant de l'éditeur Développez qui convertit l'Unicode en entités... voilà ce que je voulais montrer: http://jsbin.com/bozocixedu/1/

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

Discussions similaires

  1. [Debian] Connexion wifi avec clés WPA
    Par gege2061 dans le forum Réseau
    Réponses: 8
    Dernier message: 14/10/2008, 21h03
  2. [Jtable]Remplir un OBject[][] avec une ArrayList
    Par ArN0.VdB dans le forum Composants
    Réponses: 27
    Dernier message: 25/04/2007, 10h43
  3. Remplir un Object[][] avec un fichier properties
    Par n8ken dans le forum Collection et Stream
    Réponses: 22
    Dernier message: 10/11/2006, 16h35
  4. Aide pour MCD avec clés étrangères
    Par tiger33 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2006, 16h01
  5. [Struts] elements avec clés aléatoires
    Par zais_ethael dans le forum Struts 1
    Réponses: 11
    Dernier message: 30/04/2006, 16h28

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