type of et undefined

type of et undefined - HTML/CSS - Programmation

Marsh Posté le 29-09-2011 à 13:19:30    

Bonjour,
 
J'aurai besoin de remplir un remplir un tableau suivant des clefs valeurs. Mais je ne sais pas si la clef a déjà été défini ou pas, alors je dois tester son contenu avant.
Si elle n'a pas été encore défini, alors je l'initialise avec un début de string.
 
Pour ça, j'ai voulu mettre en place ce code :
 

Code :
  1. $.each(data, function(index, value) {
  2.  if( typeof(tableauAutorisations[value['gro_id']]) === "undefined" ) {
  3.   tableauAutorisations[value['gro_id']] = "<tr><td>" + value['gro_libelle'] + "</td>";
  4.   tableauAutorisations1erColonne[tableauAutorisations1erColonne.length +1] = value['gro_id'];
  5.  }
  6. ....
  7. });


 
Il marche bien, mais il apparait à l'écran à chaque tour de boucle un "undefined"
 
Alors j'ai tenté cette version :
 

Code :
  1. $.each(data, function(index, value) {
  2.  try {
  3.   var isDefined = tableauAutorisations[value['gro_id']];
  4. //ou
  5.   var isDefined = (tableauAutorisations[value['gro_id']] == "undefined" );
  6.  } catch(e){
  7.   console.debug("nouvelle clef 'groupe' ajouté." );
  8.   tableauAutorisations[value['gro_id']] = "<tr><td>" + value['gro_libelle'] + "</td>";
  9.   tableauAutorisations1erColonne[tableauAutorisations1erColonne.length +1] = value['gro_id'];
  10.  }
  11. });


 
mais là, je ne passe jamais dans le catch...
 
existe t'il une solution ?

Reply

Marsh Posté le 29-09-2011 à 13:19:30   

Reply

Marsh Posté le 29-09-2011 à 18:54:15    

bah finalement je me suis arrangé pour faire autrement...
 
Mais si quelqu'un à une solution, je suis quand même preneur par curiosité !

Reply

Marsh Posté le 02-10-2011 à 20:37:25    

Dans les deux cas tu te trompes dans tes conditions :
 
if( typeof(tableauAutorisations[value['gro_id']]) !== "undefined" )  
 
var isDefined = (tableauAutorisations[value['gro_id']] != "undefined" )
 
C'est peut etre a cause de ca que ca merde


Message édité par Pascal le nain le 02-10-2011 à 23:47:11
Reply

Marsh Posté le 02-10-2011 à 20:46:53    

Pour le premier cas, je voulais tester une égalité, ça aurait été "===" alors ? Je suis plus sûr de moi, mais je crois que j'avais testé ça sans succès.
 
Merci en tout cas !
 
Hum, dois-je passer le topic en résolu ? puisque au final il ne l'est pas vraiment, et je n'ai plus besoin de le mettre en place :o

Reply

Marsh Posté le 02-10-2011 à 20:50:49    

Reply

Marsh Posté le 02-10-2011 à 21:37:55    

zut alors, c'était sans quote... je me coucherai moins bête !
 
Test if variables are undefined:

Code :
  1. <script type="text/javascript">
  2. var t1="";
  3. var t2;
  4. if (t1==undefined)
  5. {
  6. document.write("t1 is undefined" );
  7. }
  8. if (t2==undefined)
  9. {
  10. document.write("t2 is undefined" );
  11. }
  12. </script>


 
The output of the code above will be:

Code :
  1. t2 is undefined


 
merci !

Reply

Marsh Posté le 02-10-2011 à 23:45:30    

Ce sont deux choses différentes (3 en fait):

 

1. undefined === undefined, dans ce cas c'est la valeur undefined.

 

2. undefined == undefined, c'est valide, c'est la valeur undefined, mais null == undefined (l'égalité non stricte essaie tout le temps de renvoyer true)

 

3. typeof undefined === 'undefined', typeof retourne le type des valeurs primitives de Javascript (undefined, number, string, function) ou bien "object" (pour tout le reste, y compris null). Il a aussi l'avantage de ne pas évaluer un nom, et donc de fonctionner (sans générer de warning) pour des variables n'ayant pas été définies (avec var).


Message édité par masklinn le 02-10-2011 à 23:46:50

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed