Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/10/2011, 15:34
Rkovac
 
Fecha de Ingreso: agosto-2011
Mensajes: 24
Antigüedad: 12 años, 11 meses
Puntos: 2
arrays componentes tipo objeto

Hola. Me gustaría que me ayudaran a resolver este problema. Quiero sacar del array con componentes de tipo objeto cual es la edad mayor de los objetos de la clase "persona" para mostrarla en pantalla.

Código Javascript:
Ver original
  1. <html>
  2.     <head><title>problema javascript</title>
  3.    
  4.     </head>
  5.    
  6.  <body>
  7.     <script type="text/javascript">
  8.    
  9.      function persona(nombre, edad){             //se crea la clase persona
  10.         this.nombre = nombre;
  11.         this.edad = edad;
  12.    }
  13.    
  14.     var Personas = new Array();
  15.     Personas[0] = new persona("Benjamin", 30);        //se  crea el array y se llena
  16.     Personas[1] = new persona("Encarni", 28);
  17.     Personas[2] = new persona("Antonio", 40);
  18.     Personas[3] = new persona("Miguel", 35);
  19.    
  20.     var em = 0;
  21.     var Nem = 0;          //variables em(edad mayor) y Nem(numero edad mayor)
  22.                                      
  23.    
  24.     for(i=0; i<Personas.length; i++){         //bucle para saber edad mayor
  25.         if(persona.edad > em){
  26.             em = persona.edad;
  27.             Nem = 1;
  28.         }
  29.            else
  30.                 if(persona.edad == em){
  31.                     Nem++;
  32.                 }
  33.         }
  34.    
  35.     alert(em);                          //alert de (em) que no muestra el valor deseado
  36.    
  37.     </script>
  38.     </body>
  39. </html>

Primero creo la clase persona y despues creo un array y lo lleno con cuatro objetos de dicha clase. Recorro el array y llamo a una función que me detecte cual de las edades introducidas es la más alta con el fin de mostrarla en pantalla. Creo que todo está bien, pero cuando hago el "alert" de la variable "em" me muestra el valor 0 que es el valor con el que la habia inicializado y no el valor que toma despues de aplicarle el bucle "for". He probado con un "return" despues del bucle pero no me funciona. Espero que puedan ayudarme un saludo.