Foros del Web » Programando para Internet » Javascript »

Problema array en JavaScript

Estas en el tema de Problema array en JavaScript en el foro de Javascript en Foros del Web. Mi duda en la siguiente: tengo un array por ejemplo idProductos a este array le voy añadiendo campos con push idProductos.push ("lo que sea"); y ...
  #1 (permalink)  
Antiguo 17/07/2013, 17:12
 
Fecha de Ingreso: abril-2009
Mensajes: 356
Antigüedad: 15 años
Puntos: 7
Problema array en JavaScript

Mi duda en la siguiente:

tengo un array por ejemplo idProductos

a este array le voy añadiendo campos con push

idProductos.push ("lo que sea");

y mas tarde le voy quitando productos

el resultado seria algo asi

idProductos[0] = "";
idProductos[5] = "";
idProductos[7] = "";

el problema biene al recorrerlo que si ago un for:

for (var i =0; i<idProductos.lenght;i++) {

si aqui quiero hacer al producto asi : idProductos[i] me va a salir que no existen porque ya los borre

}

mi pregunta es como podria recorrer el array independientemente de que tenga 1 o 100 id y que ademas vallan salteadas

gracias de antemano :)
__________________
Cannabis; todo sobre el mundo de la marihuana
  #2 (permalink)  
Antiguo 17/07/2013, 17:24
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Problema array en javascript

Pues entonces lo que tienes que hacer es eliminar los elementos del array y no ponerles cadenas vacías, por ejemplo algo así:

Código Javascript:
Ver original
  1. myArray = [1, 2, 3];
  2. myArray.splice(1,1); // Elimina 2
  3. myArray; // [1, 3]

Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 17/07/2013, 17:47
 
Fecha de Ingreso: abril-2009
Mensajes: 356
Antigüedad: 15 años
Puntos: 7
Respuesta: Problema array en javascript

asi los elimino si pero tenemos el mismo problema

myArray = [1, 2, 3];
myArray.splice(1,1); // Elimina 2
myArray; // [1, 3]

esto quedaria asi

myArray[0] = 1
myArray[1] = no existe
myArray[2] = 3

por lo tanto al recorrerlo con un for:

for (var i =0; i<myArray.lenght;i++) {

esto:
myArray[i]
cuando i = 1 ese no existira y dara error al usarlo

}

de todas formas gracias :)
__________________
Cannabis; todo sobre el mundo de la marihuana
  #4 (permalink)  
Antiguo 17/07/2013, 17:53
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Problema array en javascript

¿dvd181191, estás conjeturando o probaste?
PD: es length (..th, no ..ht)
  #5 (permalink)  
Antiguo 17/07/2013, 17:58
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Problema array en javascript

Como Panino5001 dice, prueba lo que dices, al eliminar elementos de un array como te mostré la longitud obviamente cambia.

Saludos
__________________
Grupo Telegram Docker en Español
  #6 (permalink)  
Antiguo 17/07/2013, 18:03
 
Fecha de Ingreso: abril-2009
Mensajes: 356
Antigüedad: 15 años
Puntos: 7
Respuesta: Problema array en javascript

si he probado y no se que me pasa :)

bueno pongo el codigo aver si asi va mejor

es para un juego con node js, para alamacenar los datos de los jugadores conectados y asi poder interactuar con ellos

ingreasar a la lista:
Código:
                                       //creamos un objeto json
					var datosUsuario = {
						"nombre": rowJugador[0].Nombre,
						"idsocket": socket.id,
						"posX" : rowJugador[0].PosX,
						"posY" : rowJugador[0].PosY
					}
					//añadimos el usuario a la lista 
					var idUsuario = usuarios.push (datosUsuario);
					//guardamos su id
					idUsuarios.push(idUsuario);
						console.log ("Lista de usuarios: "+usuarios);
						console.log (idUsuarios);
					//creamos la variable del socket con el id del jugador
						console.log ("Usuario "+rowJugador[0].Nombre+" conectado");
					socket.idJugador = idUsuario;
borra de la lista

Código:
for (var i = 0; i < idUsuarios.length; i++) {
				console.log ("Nombre usuario: "+usuarios[idUsuarios[i]].nombre);
				console.log ("Nombre socket; "+socket.nameJugador);
				//comprobamos que jugador tenemos que desconectar
				if (idUsuarios[i] == socket.idJugador) {				
						console.log ("El jugador "+usuarios[i].nombre+" se ha desconectado");
					//desconectamos al jugador
					idUsuarios.splice(i,1);
					usuarios.splice(idUsuarios[i],1);
					console.log ("ID usuarios: "+idUsuarios);
					console.log ("Lista de usuarios: "+usuarios);					
				}			
			}

		for (var i = 0; i < idUsuarios.length; i++) {
				console.log ("Usuarios restantes: "+usuarios[idUsuarios[i]].nombre);							
		}
las viables
var usuarios = [];
var idUsuarios = []
son arrays globales para poder acceder a los datos
__________________
Cannabis; todo sobre el mundo de la marihuana
  #7 (permalink)  
Antiguo 17/07/2013, 18:09
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Problema array en javascript

Parece que tu error es que lo eliminas cuando estás recorriendo el array, por lo cual su longitud cambia. Tienes que eliminar los elementos después de recorrer el array.

Saludos
__________________
Grupo Telegram Docker en Español

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 22:26.