Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: dimitrix en 29 Julio 2015, 02:49 am



Título: Comprobar objetos en JS
Publicado por: dimitrix en 29 Julio 2015, 02:49 am
Pues... a ver, tengo un objeto que en ocasiones tiene:

obj.nombre
obj.apellidos
obj.edad

Y en otras es sólo:

obj.nombre
obj.edad



Lo que me gustaría saber, es cual es el camino más rápido para hacer esto

txt = 'Nombre: '+obj.nombre+' '+obj.apellidos+' '+obj.edad

El problema de esto es que si no existe obj.apellidos el JS da error y se para, por lo que me gustaría saber cual es el camino más rápido para hacer estas cosas. Ya que poner un typeof creo que no lo sería.

PD: Esto es un ejemplo.


Título: Re: Comprobar objetos en JS
Publicado por: T. Collins en 29 Julio 2015, 03:30 am
Lo primero que se me ha ocurrido, igual hay mejores formas de hacerlo
Código
  1. var txt = "Nombre:";
  2. for(x in obj){ txt += " "+obj[x]; }

Mírate esto: https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Statements/for...in (https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Statements/for...in)


Título: Re: Comprobar objetos en JS
Publicado por: engel lex en 29 Julio 2015, 03:48 am
correción al codigo de

Código
  1. for(x in obj){ txt += " "+x; }
  2.  

pero puedes salir desorganizado

tambien puedes recurrir a

Código
  1. var txt = "Nombre: " + obj.nombre + ' ' + obj.apellidos != undefined ? obj.apellidos : '' + ' ' + obj.apellidos


Título: Re: Comprobar objetos en JS
Publicado por: MinusFour en 29 Julio 2015, 04:39 am
correción al codigo de

Código
  1. for(x in obj){ txt += " "+x; }
  2.  

pero puedes salir desorganizado

El codigo de T. Collins es correcto. x es el nombre de la propiedad así que eso simplemente concatena los nombres de las propiedades del objeto, no los valores de las propiedades. El problema es tal y como comentas, el orden no es seguro.

Si quieres comprobar que una variable este definida la comparas contra undefined:

Código
  1. if(obj.apellidos !== undefined) {
  2.    //obj.apellidos está definido.
  3. }

Si por ejemplo, estuviera anidado (obj.apellidos.primero por ejemplo), tienes que hacer chequeos en orden o te arriesgas a un TypeError:

Código
  1. if(obj.apellidos !== undefined && obj.apellidos.primero !== undefined) {
  2.    //obj.apellidos y obj.apellidos.primero estan definidos.
  3. }

Undefined tambien es un valor falsey, por lo que puedes escribir así:

Código
  1. if(obj.apellidos){
  2.    //obj.apellidos existe.
  3. }

El único problema es que hay otros valores que tambien son falsey (0, '', false, null, NaN). Si esos valores no pueden ser apellidos, entonces no tienes ningún problema.


Título: Re: Comprobar objetos en JS
Publicado por: eLank0 en 29 Julio 2015, 09:59 am
Lo más fácil es:

Código:
txt = 'Nombre: '+ (obj.nombre || '') +' '+ (obj.apellidos || '') + ''+ (obj.edad || '')

En este caso en caso de ser undefined no pondrá nada.

Salu2!