Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Como seleccionar un arreglo con condiciones

Estas en el tema de Como seleccionar un arreglo con condiciones en el foro de Javascript en Foros del Web. Hola amigos, bueno quisiera saber si hay una forma de seleccionar 1 arreglo con condiciones, ejemplo: Tengo una variable Players en ella hay 2 arreglos ...
  #1 (permalink)  
Antiguo 14/06/2014, 20:08
Avatar de JuanPabloArrebillaga  
Fecha de Ingreso: diciembre-2013
Ubicación: Córdoba
Mensajes: 46
Antigüedad: 10 años, 4 meses
Puntos: 0
Como seleccionar un arreglo con condiciones

Hola amigos, bueno quisiera saber si hay una forma de seleccionar 1 arreglo con condiciones, ejemplo:

Tengo una variable Players en ella hay 2 arreglos con distintos valores pero cada cual tiene un name una Juan y la otra Pablo.

bueno quisiera saber si hay forma de seleccionar la que tiene name Juan o Pablo, pero sin necesidad de hacer un for in y tener que hacer dentro del for in el if.

no se si me explico, espero que puedan ayudarme.

Saludos
__________________
Medir el progreso de la programación por líneas de código es como medir el progreso en la construcción de aviones por el peso.
  #2 (permalink)  
Antiguo 14/06/2014, 20:39
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Como seleccionar un arreglo con condiciones

La variable Players, ¿es un objeto literal? Sería de mucha ayuda que nos proporciones el código que has desarrollado para intentar resolver tu problema.

Saludos
__________________
«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
  #3 (permalink)  
Antiguo 14/06/2014, 20:40
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como seleccionar un arreglo con condiciones

Hola Juan Pablo,

Tratare de adivinar porque no veo codigo:

Código Javascript:
Ver original
  1. <script>
  2.     var Players = new Array;
  3.    
  4.     var obj1 = new Array; // u Object  
  5.     var obj2 = new Array;      
  6.    
  7.     obj1['name']= 'Juan';      
  8.     Players.push(obj1);
  9.    
  10.     obj2['name']= 'Pablo';     
  11.     Players.push(obj2);
  12.    
  13.     console.log(Players[0]); // [name: "Juan"]
  14.     console.log(Players[1]); // [name: "Pablo"]    
  15. </script>
__________________
Salu2!
  #4 (permalink)  
Antiguo 14/06/2014, 20:56
Avatar de JuanPabloArrebillaga  
Fecha de Ingreso: diciembre-2013
Ubicación: Córdoba
Mensajes: 46
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Como seleccionar un arreglo con condiciones

Cita:
Iniciado por Italico76 Ver Mensaje
Hola Juan Pablo,

Tratare de adivinar porque no veo codigo:

Código Javascript:
Ver original
  1. <script>
  2.     var Players = new Array;
  3.    
  4.     var obj1 = new Array; // u Object  
  5.     var obj2 = new Array;      
  6.    
  7.     obj1['name']= 'Juan';      
  8.     Players.push(obj1);
  9.    
  10.     obj2['name']= 'Pablo';     
  11.     Players.push(obj2);
  12.    
  13.     console.log(Players[0]); // [name: "Juan"]
  14.     console.log(Players[1]); // [name: "Pablo"]    
  15. </script>

Algo asi pero pasa que tiene que ser automatico [0] no es lo que necesito mira:

Código Javascript:
Ver original
  1. Players.push({
  2.     width: 20,
  3.     height: 50,
  4.     posX: posX,
  5.     posY: posY,
  6.     direction: 's',
  7.     name: data,
  8. });

la variable data es un nombre traido del servidor


osea que necesitaria elejir ej: el que en 'name' contenga el valor que yo defina ej: Juan
__________________
Medir el progreso de la programación por líneas de código es como medir el progreso en la construcción de aviones por el peso.
  #5 (permalink)  
Antiguo 14/06/2014, 21:12
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Como seleccionar un arreglo con condiciones

No estoy muy seguro de que puedas buscar el valor del atributo de un objeto contenido en un array sin usar al menos un bucle, pero con uno sí se puede:

Código Javascript:
Ver original
  1. var array = [],
  2.     buscar = function (nombre){
  3.         for (var i = 0, l = array.length; i < l; i++)
  4.             if (array[i].nombre == nombre){
  5.                 console.log(array[i].nombre + ", " + array[i].edad + " años");
  6.                 break;
  7.             }
  8.     };
  9.  
  10. array.push({
  11.   nombre: "Juan",
  12.   edad: 14
  13. });
  14.  
  15. array.push({
  16.   nombre: "María",
  17.   edad: 28
  18. });
  19.  
  20. buscar("María"); //Imprime 'María, 28 años'

Saludos
__________________
«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
  #6 (permalink)  
Antiguo 14/06/2014, 21:13
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como seleccionar un arreglo con condiciones

Te va a tocar recorrer de alguna forma el arreglo sea directa o indirectamente...... pero es imposible a priori saber en que posicion esta ese name:

Código Javascript:
Ver original
  1. <script>
  2.     var Players = new Array;
  3.    
  4.     Players.push({
  5.     width: 20,
  6.     height: 50,
  7.     posX: 33,
  8.     posY: 12,
  9.     direction: 's',
  10.     name: 'Maria',
  11. });
  12.  
  13.     Players.push({
  14.     width: 20,
  15.     height: 50,
  16.     posX: 33,
  17.     posY: 12,
  18.     direction: 's',
  19.     name: 'Pablo',
  20. });
  21.  
  22.  
  23.     Players.push({
  24.     width: 20,
  25.     height: 50,
  26.     posX: 33,
  27.     posY: 12,
  28.     direction: 's',
  29.     name: 'Juan',
  30. });
  31.  
  32.     aguja = 'Pablo'; // a buscar
  33.  
  34.     for (ix in Players)
  35.         if (Players[ix].name==aguja)
  36.             console.log('Encontrado '+aguja+' en posicion '+ix);
  37.    
  38. </script>

Imprime:

Cita:
Encontrado Pablo en posicion 1
__________________
Salu2!
  #7 (permalink)  
Antiguo 14/06/2014, 21:18
Avatar de JuanPabloArrebillaga  
Fecha de Ingreso: diciembre-2013
Ubicación: Córdoba
Mensajes: 46
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Como seleccionar un arreglo con condiciones

Bueno gracias, si eso tengo yo pero queria ver si habia forma de hacerlo sin for in.

Saludos.
__________________
Medir el progreso de la programación por líneas de código es como medir el progreso en la construcción de aviones por el peso.
  #8 (permalink)  
Antiguo 14/06/2014, 21:19
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Como seleccionar un arreglo con condiciones

Italico76, sería mejor que hicieras un corte del bucle una vez que se haya encontrado el dato, pues del modo en que está, seguirá iterando incluso si ya se encontró la coincidencia.

Saludos
__________________
«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
  #9 (permalink)  
Antiguo 14/06/2014, 21:24
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como seleccionar un arreglo con condiciones

LO QUE PIDES... SE PUEDE....... pero DEPENDE de como empujes los elementos al arreglo...y si van a repetirse deberias hacer un pequeño cambio

Código Javascript:
Ver original
  1. <script>
  2.     var Players = new Object;
  3.    
  4.     // almacenas asi....
  5.    
  6.     Players['Maria']={
  7.     width: 20,
  8.     height: 50,
  9.     posX: 33,
  10.     posY: 12,
  11.     direction: 's',
  12.     name: 'Maria',
  13. };
  14.  
  15.     Players['Pablo']={
  16.     width: 20,
  17.     height: 50,
  18.     posX: 33,
  19.     posY: 12,
  20.     direction: 's',
  21.     name: 'Pablo',
  22. };
  23.  
  24.  
  25.     Players['Juan']={
  26.     width: 20,
  27.     height: 50,
  28.     posX: 33,
  29.     posY: 12,
  30.     direction: 's',
  31.     name: 'Juan',
  32. };
  33.  
  34.     aguja = 'Pablo'; // a buscar   
  35.     console.log(Players[aguja]);
  36.    
  37. </script>

Obviamente podrias suprimir el repetir el name ya que ahora esta en indice del arreglo:

Cita:
Players['Pablo']={
width: 20,
height: 50,
posX: 33,
posY: 12,
direction: 's',
name: 'Pablo', <<<< se podria eliminar, es redundante ahora
};
__________________
Salu2!
  #10 (permalink)  
Antiguo 14/06/2014, 21:43
Avatar de JuanPabloArrebillaga  
Fecha de Ingreso: diciembre-2013
Ubicación: Córdoba
Mensajes: 46
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Como seleccionar un arreglo con condiciones

Mil gracias, justo eso necesitaba Objetos ya. y justo no quiero que se repitan
__________________
Medir el progreso de la programación por líneas de código es como medir el progreso en la construcción de aviones por el peso.
  #11 (permalink)  
Antiguo 14/06/2014, 21:51
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como seleccionar un arreglo con condiciones

Cita:
Iniciado por Alexis88 Ver Mensaje
Italico76, sería mejor que hicieras un corte del bucle una vez que se haya encontrado el dato, pues del modo en que está, seguirá iterando incluso si ya se encontró la coincidencia.
Por suerte no era necesario ningun bucle
__________________
Salu2!
  #12 (permalink)  
Antiguo 15/06/2014, 01:52
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Como seleccionar un arreglo con condiciones

Cita:
Iniciado por Italico76 Ver Mensaje
Por suerte no era necesario ningun bucle
Porque el problema original no usaba objetos, ¿o por qué crees que le pregunté esto cuando aún no había proporcionado código? :

Cita:
Iniciado por Alexis88 Ver Mensaje
La variable Players, ¿es un objeto literal?
Para el problema original, sí es necesario utilizar el bucle. Lo tuyo fue una solución a otro problema, buscar el valor del atributo de un objeto contenido en otro objeto, no en un array, como en el problema original.

Saludos
__________________
«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
  #13 (permalink)  
Antiguo 15/06/2014, 05:44
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como seleccionar un arreglo con condiciones

Acabo de verificar que es "seguro" en Javascript hacer eso..... pues en PHP hubiera arrojado un error de tlpo indefined index... aca solo devolveria "undefined' sino existe la aguja.

Para mi la moraleja es que siempre hay que dedicar algo de tiempo a pensar bien el diseño y a re-diseñar para obtener una solucion eficiente.
__________________
Salu2!

Última edición por Italico76; 15/06/2014 a las 06:26
  #14 (permalink)  
Antiguo 15/06/2014, 07:19
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Como seleccionar un arreglo con condiciones

Eso está de más decirlo, aunque a veces haya que repetirlo para que los demás lo tomen en cuenta, pero sin desviarnos del punto, el tema era si se podía o no realizar la búsqueda del valor del atributo de un objeto contenido en un array sin usar bucles, no si convenía hacer un replanteamiento de la estructura, por lo cual, esto no es cierto:

Cita:
Iniciado por Italico76 Ver Mensaje
Por suerte no era necesario ningun bucle
Ya que sí era necesario. Con objetos es mucho más sencillo, por eso fue lo que le pregunté desde el inicio. De cualquier manera, nuestro amigo JuanPabloArrebillaga ya aprendió que hacerlo con objetos es más fácil.

Saludos
__________________
«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: arreglo, condiciones, valor, 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 14:41.