Foros del Web » Programando para Internet » Node.js »

[SOLUCIONADO] Buscar en array

Estas en el tema de Buscar en array en el foro de Node.js en Foros del Web. Hola!, estoy haciendo un chat con Node.js, he creado un array que guarda los usuarios que se van conectando de la siguiente manera (los datos ...
  #1 (permalink)  
Antiguo 07/01/2014, 10:51
 
Fecha de Ingreso: febrero-2009
Mensajes: 151
Antigüedad: 15 años, 9 meses
Puntos: 1
Buscar en array

Hola!, estoy haciendo un chat con Node.js, he creado un array que guarda los usuarios que se van conectando de la siguiente manera (los datos salen de una base de datos):

Código HTML:
usuariosConectados[rows[0].id] = {'nombre':rows[0].display_name, 'id':rows[0].id,'socket':socket.id};
el problema es cuando quiero hacer la verificacion de si el usuario ya esta conectado desde otra pestaña o navegador, etc... he probado:

Código HTML:
if(rows[0].id == usuariosConectados[rows[0].id].['id'])
Me devuelve un error en el primer ingreso de que no existe la propiedad id, lo cual es logico ya que el array esta vacio.

He probado tambien con el bucle For pero usuariosConectados.length me arroja undefined.

he intentado con con indexOf y me arroja: Object #<Object> has no method 'indexOf'

La verdad se me acabaron las ideas jejej, les agradeceria si pueden indicarme que estoy haciendo mal. Gracias!!!
  #2 (permalink)  
Antiguo 15/01/2014, 16:26
Avatar de SinguerInc  
Fecha de Ingreso: octubre-2007
Ubicación: Barcelona, España
Mensajes: 551
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: Buscar en array

Hola @dunga007, varias cosas:
- Primero, es buena práctica no repetirse. Intenta guardar una referencia de las variables que utilizas varias veces, por ejemplo, si necesitas "row[0]" guárdalo de la siguiente manera:

Código Javascript:
Ver original
  1. var aRow = row[0];
  2. var aRowId = aRow.id;

y luego utilizas "aRow" y "aRowId" todas las veces que sea necesario, por ejemplo:

Código Javascript:
Ver original
  1. usuariosConectados[aRowId] = {'nombre': aRow.display_name, 'id':aRowId,'socket':socket.id};

- Segundo, cuando trabajas con arrays, es bastante probable que en algún momento, el objeto que utilizas no exista, por lo tanto debes comprobar antes de usar:

Código Javascript:
Ver original
  1. if(aRow){
  2.   if(aRowId == usuariosConectados[aRowId].id){
  3.     // ...
  4.   }
  5. }

Es un poco difícil resolver tu problema sin ver todo el código, pero espero que esto que te digo te pueda ayudar a resolver este u otro problema.
__________________
/blog.singuerinc.com
  #3 (permalink)  
Antiguo 22/01/2014, 10:33
 
Fecha de Ingreso: febrero-2009
Mensajes: 151
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Buscar en array

Cita:
Iniciado por SinguerInc Ver Mensaje
Hola @dunga007, varias cosas:
- Primero, es buena práctica no repetirse. Intenta guardar una referencia de las variables que utilizas varias veces, por ejemplo, si necesitas "row[0]" guárdalo de la siguiente manera:

Código Javascript:
Ver original
  1. var aRow = row[0];
  2. var aRowId = aRow.id;

y luego utilizas "aRow" y "aRowId" todas las veces que sea necesario, por ejemplo:

Código Javascript:
Ver original
  1. usuariosConectados[aRowId] = {'nombre': aRow.display_name, 'id':aRowId,'socket':socket.id};

- Segundo, cuando trabajas con arrays, es bastante probable que en algún momento, el objeto que utilizas no exista, por lo tanto debes comprobar antes de usar:

Código Javascript:
Ver original
  1. if(aRow){
  2.   if(aRowId == usuariosConectados[aRowId].id){
  3.     // ...
  4.   }
  5. }

Es un poco difícil resolver tu problema sin ver todo el código, pero espero que esto que te digo te pueda ayudar a resolver este u otro problema.
Hola SinguerInc! mil gracias por tu ayuda te comento que ya resolvi el problema!. Gracias!!!

Etiquetas: Ninguno
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 10:49.