Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1475 connectés 

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [JS]Traitement d'une variable pouvant être un tableau ou pas

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JS]Traitement d'une variable pouvant être un tableau ou pas

n°2312015
Turkleton
I don't quite understand you
Posté le 05-03-2018 à 15:51:36  profilanswer
 


J'ai un serveur nodejs qui va chercher des infos dans un fichier JSON. Suivant l'enregistrement demandé, les infos retournées peuvent être une variable ou un tableau de variables (exemple d'un enregistrement dans le JSON : "donnees":"foo" ou "donnees":["foo","bar"] )
 
Y a-t-il une manière plus propre (et plus concise) de traiter ces données que de devoir passer par ça :
 

Code :
  1. // récupération de la ou des "donnees" dans le JSON, et stockage dans une variable "aTraiter"
  2. if (Array.isArray(aTraiter)) {
  3.   for(var element in aTraiter) {
  4.    // traitement sur chaque element du tableau
  5.   }
  6.  } else {
  7.    // même traitement que ci-dessus mais juste sur une seule variable
  8.  }


 
À noter : Si je ne fais pas le test isArray et que je n'ai qu'une chaîne de caractères dans aTraiter, le "for… in" décompose toute ma chaîne caractère par caractère donc pas le comportement voulu.
 
Dans l'idéal, vu que le traitement est le même, j'aurais voulu n'avoir à l'écrire qu'une seule fois pour tous les cas de figure. Est-ce possible ?


---------------
If you think it could look good, then I guess it should
mood
Publicité
Posté le 05-03-2018 à 15:51:36  profilanswer
 

n°2312016
pluj
Posté le 05-03-2018 à 16:32:05  profilanswer
 

Lu,
 
bah :

Code :
  1. aTraiter = Array.isArray(aTraiter) ? aTraiter : [aTraiter];
  2. for (var element in aTraiter) {
  3.    ...
  4. }


?

n°2312017
Turkleton
I don't quite understand you
Posté le 05-03-2018 à 16:44:45  profilanswer
 

Ha ouais, tout bêtement :D  
 
Je sais pas pourquoi je m'attendais à un truc plus élégant, mais ça fera bien l'affaire :jap:  
 
Merci !


---------------
If you think it could look good, then I guess it should
n°2312018
Turkleton
I don't quite understand you
Posté le 05-03-2018 à 17:00:12  profilanswer
 

Effectivement, ça fonctionne très bien :)  
 
Je connaissais pas ce truc "variable = [variable]", ça fait quoi exactement ? Ça transforme juste ta variable en tableau avec un seul enregistrement (le contenu original de la variable) ? Ou y'a d'autres trucs qui se passent que je ne vois pas ?
C'est un raccourci d'écriture (comme "tableau = []" à la place de "tableau = new Array()" ) ?


---------------
If you think it could look good, then I guess it should
n°2312020
pluj
Posté le 05-03-2018 à 17:35:14  profilanswer
 

Citation :

Ça transforme juste ta variable en tableau avec un seul enregistrement (le contenu original de la variable) ?


Oui, c'est exactement ça : on crée un tableau dont le contenu de la variable aTraiter en est le seul élément.


Message édité par pluj le 05-03-2018 à 17:35:50
n°2312021
Turkleton
I don't quite understand you
Posté le 05-03-2018 à 17:41:08  profilanswer
 

Cool, merci pour la précision, je le saurai maintenant :) (c'est vraiment un langage de feignasse le Javascript… :o )


---------------
If you think it could look good, then I guess it should
n°2312022
pluj
Posté le 05-03-2018 à 17:59:27  profilanswer
 

Ce n'est pas le qualificatif que j'aurais employé à propos de JS (mais bon, ce sujet n'est pas le lieu pour en débattre/troller).
 
Et puis tu peux faire la même chose avec beaucoup de langages. La "syntaxe" pour un tableau est également identique dans pas mal d'entre eux (Ruby, PHP >= 5.4.0, etc).

n°2312025
Turkleton
I don't quite understand you
Posté le 05-03-2018 à 21:45:01  profilanswer
 

Ha non, je voulais pas troller, c'est plutôt moi la feignasse :D  
 
Je programme du micro-contrôleur en simili-C à côté, je me bouffe les couilles à devoir faire moi-même des fonctions pour tout et n'importe quoi… Du coup j'adore la versatilité du JS là-dessus ;) (et c'est bien pour ça que je posais ma question à la base, je me disais bien qu'il devait y avoir une solution facile tirant partie de la grande liberté de la syntaxe JS)


---------------
If you think it could look good, then I guess it should
n°2312026
pluj
Posté le 05-03-2018 à 22:26:11  profilanswer
 

Ah, oui, c'est sûr qu'en comparant un langage compilé et bas niveau comme le C à un langage type scripté, il n'y a vraiment pas photo en complexité comme temps de développement ;)


Message édité par pluj le 05-03-2018 à 22:27:20
n°2312027
Turkleton
I don't quite understand you
Posté le 05-03-2018 à 23:25:11  profilanswer
 

Voilà. D'ailleurs je suis super content de m'être tourné vers nodeJS, que je connaissais pas, et qui convient parfaitement à ce que je dois faire. L'inclusion de modules et tout ça rajoute encore une couche de confort au JS de base, sans compter l'aspect événementiel qui était le critère principal à satisfaire.
 
Merci encore pour ta réponse, j'ai gagné quelques lignes de code vu que j'avais plusieurs occurrences de ce bloc (et puis j'ai même carrément foutu l'expression ternaire dans le for tant qu'à faire :o ).


---------------
If you think it could look good, then I guess it should

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [JS]Traitement d'une variable pouvant être un tableau ou pas

 

Sujets relatifs
Moyen le plus simple pour lire des fichiers CSV --> TableauActualiser un organigramme PPT à partir d'un tableau excel
Max de chacune des dimensions d'un tableau multidimensionnelimplémenter un flot optique (traitement d'image)
PHPUnit verifier le type de donnée dans un tableauproblème avec variable à contenu "complexe"
Vérifier si variable existe dans la base de donnéeJAVA Variable final ???
Ajout de semaines en JS[Résolu] stopper une animation en HTML5/JS
Plus de sujets relatifs à : [JS]Traitement d'une variable pouvant être un tableau ou pas


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR