Foros del Web » Programando para Internet » Javascript »

error undefined validar array multidimensional (tree)

Estas en el tema de error undefined validar array multidimensional (tree) en el foro de Javascript en Foros del Web. Hola. tengo un probolema recurrente al que no he podido encontrar solucion. Otilizo mucho los arrays multidimensionales para crear estructuras de datos. como por ejemplo: ...
  #1 (permalink)  
Antiguo 28/10/2015, 07:08
Avatar de yojose  
Fecha de Ingreso: junio-2005
Mensajes: 6
Antigüedad: 19 años, 6 meses
Puntos: 0
error undefined validar array multidimensional (tree)

Hola. tengo un probolema recurrente al que no he podido encontrar solucion. Otilizo mucho los arrays multidimensionales para crear estructuras de datos. como por ejemplo:

Código:
var clientes=[
     cliente1:[nombre:Juan, ropa:[pantalones,camisa]],
     cliente2: [nombre:pepe]
]
El problema viene cuando intento acceder a una posicion del array no definido aun cuando hay una condicion previa. Pongo un ejemplo de codigo a ver si se entiende mejor:

Código:
var mirarRopa=false;

if(mirarRopa==true){
   var ropaCliente1=clientes.cliente1.ropa;
   var ropaCliente2=clientes.cliente2.ropa;
   var ropaCliente3=clientes.cliente3.ropa;
}
en este ejemplo aun teniendo la variable mirarRopa a false se producen dos errores de javascript:

Error clientes.cliente2.ropa is undefined
y Error clientes.cliente3 es undefined

la unica forma de solucionar esto seria:

Código:
var mirarRopa=false;

if(mirarRopa==true && clientes.cliente2.ropa!=undefined && clientes.cliente3!=undefined){
   var ropaCliente1=clientes.cliente1.ropa;
   var ropaCliente2=clientes.cliente2.ropa;
   var ropaCliente3=clientes.cliente3.ropa;
}
aun asi si no existiera ropa para algun otro cliente o no existiese ese cliente causaria un error.

Mi pregunta seria si no existe algun metodo mejor y menos engorroso para hacer esta validacion. Este es un ejemplo sencillo y sin mucha utilidad pero puede complicarse mucho. Gracias.
  #2 (permalink)  
Antiguo 28/10/2015, 11:49
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: error undefined validar array multidimensional (tree)

No puedes tratar a los arrays como si se tratasen de objetos literales. Lo que te conviene hacer es trabajar con un array de objetos literales.

Por ejemplo:
Código Javascript:
Ver original
  1. var clientes = [
  2.     {nombre: "Juan", ropa: "Pantalón"},
  3.     {nombre: "Luis", ropa: "Camisa"},
  4.     {nombre: "Martín", ropa: "Gabán"}
  5. ];
  6.  
  7. function buscar(nombreCliente){
  8.     for (var i = 0, t = clientes.length; i < t; i++){
  9.         if (clientes[i].nombre == nombreCliente){
  10.             console.log(clientes[i]);
  11.             break;
  12.         }
  13.     }
  14. }
  15.  
  16. buscar("Juan");   //Object {nombre: "Juan", ropa: "Pantalón"}
  17. buscar("Luis");   //Object {nombre: "Luis", ropa: "Camisa"}
  18. buscar("Martín"); //Object {nombre: "Martín", ropa: "Gabán"}

DEMO

La función de búsqueda la incluí como ejemplo. Para acceder a las propiedades de un objeto literal, puedes utilizar la notación por puntos objeto.propiedad o por brackets objeto[propiedad].

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: multidimensional, undefined, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:31.