Foros del Web » Programando para Internet » Javascript »

Crear un array de objetos

Estas en el tema de Crear un array de objetos en el foro de Javascript en Foros del Web. Tengo un problema¿ como hago para crear un array de objetos, para ingresarle las propiedades de cada posicion del objeto? Aca les dejo el codigo ...
  #1 (permalink)  
Antiguo 14/05/2014, 10:21
 
Fecha de Ingreso: agosto-2007
Mensajes: 15
Antigüedad: 16 años, 7 meses
Puntos: 0
Pregunta Crear un array de objetos

Tengo un problema¿ como hago para crear un array de objetos, para ingresarle las propiedades de cada posicion del objeto?

Aca les dejo el codigo , es lo que pude hacer si alguien me puede dar una mano ,bienvenido sea y gracias.

Saludos amigos


Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.         var persona=[{
  3.             Edad:20,
  4.             Nombre:'Juan',
  5.             Apellido:'Perez'
  6.         }];
  7.            
  8.            
  9.          var i=1;
  10.                     var r = confirm("Quieres cargar una persona?");
  11.                     while(r==true){
  12.                         var nombre=String(prompt("Ingresa un nombre"));
  13.                         persona[i]['Nombre']=nombre;// aca me tira error dice "Cannot set property 'Nombre' of undefined " aca creo q es xq no existe la propiedad persona[1]['Nombre']
  14.  
  15.                         var name=persona[i]['Nombre']
  16.                        
  17.                         persona['Nombre'].push(name);
  18.                        
  19.  
  20.                         var apellido=String(prompt("Ingresa un apellido"));
  21.                         persona[i]['Apellido']=apellido;
  22.                         var lastname=persona[i]['Apellido'];
  23.                         persona['Apellido'].push(lastname);
  24.                        
  25.                         var edad=Number(prompt("Ingresa una edad"));
  26.                         persona[i]['Edad']=edad;
  27.                         var age=persona[i]['Edad'];
  28.                         persona['Edad'].push(age);
  29.                         i++;
  30.                        
  31.                        
  32.                             var r = confirm("Quieres cargar otra persona?");
  33.                     }
  34.                    
  35.                     document.write("Este es tu objeto<br>");
  36.                     for (var i = 0; i < persona.length; i++) {
  37.  
  38.                         document.write(persona[i].Nombre + '<br>');
  39.                         document.write(persona[i].Apellido + '<br>');
  40.                         document.write(persona[i].Edad + '<br><hr>');
  41.                          
  42.                     }
  43.                 </script>
  #2 (permalink)  
Antiguo 14/05/2014, 20:59
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Crear un array de objetos

Código Javascript:
Ver original
  1. <script language="JavaScript"> 
  2.            
  3.     var Persona = function(nombre,apellido,edad){
  4.         this.nombre = nombre || '';
  5.         this.apellido = apellido || '';    
  6.         this.edad = edad || 0;     
  7.     }
  8.  
  9.     personas = new Array();
  10.    
  11.     var i=1;
  12.     var r = confirm("Quieres cargar una persona?");
  13.                    
  14.     while(r==true)
  15.     {
  16.         var nombre      = prompt("Ingresa un nombre");
  17.         var apellido    = prompt("Ingresa un apellido");
  18.         var edad        = parseInt(prompt("Ingresa la edad"));
  19.         personas[i] =new Persona(nombre,apellido,edad);
  20.        
  21.         i++;
  22.         var r = confirm("Quieres cargar una persona?");    
  23.     }      
  24.    
  25.     // Imprimo por consola todo el array:  
  26.     for (var i = 0;i<personas.length ;i++)
  27.         console.log (personas[i]);  
  28.    
  29.     </script>
__________________
Salu2!
  #3 (permalink)  
Antiguo 15/05/2014, 10:08
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: Crear un array de objetos

En cada iteración, crea un objeto literal y ve asignándole valores, luego, insertas el objeto en el array.

Código Javascript:
Ver original
  1. var personas = [],
  2.     body = document.body;
  3.  
  4. do{
  5.     var r = confirm("¿Desea añadir datos?"),
  6.         persona = {};
  7.     if (r){
  8.         persona.nombre = prompt("Nombre:");
  9.         persona.apellido = prompt("Apellido:");
  10.         persona.edad = prompt("Edad:");
  11.         personas.push(persona);
  12.     }
  13. } while (r);
  14.  
  15. for (var i in personas){
  16.     for (var j in personas[i]){
  17.         var indice = j.replace(/\b\w/, function(l){
  18.             return l.toUpperCase();
  19.         });
  20.         body.innerHTML += indice + ": " + personas[i][j] + "<br />";
  21.     }
  22.     body.innerHTML += "<br />";
  23. }

De esta forma, si ingresaras el nombre, apellido y edad de, por ejemplo, 3 personas, el resultado sería similar al siguiente:

Código HTML:
Ver original
  1. Nombre: Juan
  2. Apellido: Pérez
  3. Edad: 28
  4.  
  5. Nombre: Estefanía
  6. Apellido: Zegarra
  7. Edad: 25
  8.  
  9. Nombre: María
  10. Apellido: Lozano
  11. Edad: 39

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
  #4 (permalink)  
Antiguo 15/05/2014, 10:19
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Crear un array de objetos

@Alexis88 : como vas campeon ? te hago un par de preguntas.....


- Dices que son objetos literales pero usas '=' en vez de ':' ?

- Por que andas preguntando con If() todo el tiempo dentro del [do..while] ?
// para eso esta while(), fijate que no haces mas if() si usas la estructura de control correcta


Sobre la primera pregunta, no lo tengo muy claro (estoy en pañales en JS)
__________________
Salu2!
  #5 (permalink)  
Antiguo 15/05/2014, 10:27
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: Crear un array de objetos

Hola Italico76, pues aquí, regresando al foro luego de unos días de ausencia por asuntos laborales.

Respondiendo a lo primero, la variable persona contiene un objeto literal el cual creo y asigno en cada iteración. Un objeto literal es una lista separada por comas de pares clave: valor. Luego, para asignar valores a sus atributos, es posible hacerlo del modo en que lo ves, accediendo al atributo al unir el nombre del objeto y el del atributo mediante un punto.

Lo segundo, es para preguntar una y otra vez al usuario si desea seguir ingresando datos, hasta que no lo desee y de clic en Cancelar.

Aquí te lo dejo para que lo pruebes.

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 15/05/2014, 10:38
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Crear un array de objetos

@Alexis: gracias por la explicacion de literales

Sobre lo segundo, te recomiendo en serio revises el uso de while(), me puedo poner canson con eso del uso correcto de estructuras de control (jejeje)

Código Javascript:
Ver original
  1. var r = confirm("¿Desea añadir datos?");
  2.     while(r==true)
  3.     {
  4.    
  5.         persona = {};
  6.        
  7.         persona.nombre = prompt("Nombre:");
  8.         persona.apellido = prompt("Apellido:");
  9.         persona.edad = prompt("Edad:");
  10.         personas.push(persona);    
  11.        
  12.         r = confirm("¿Desea añadir datos?");
  13.     }

Fijate que itera perfectamente y se detiene ni bien dices que no deseas agregar mas datos y no hay ningun if()

PD: ojala haya sido por vacaciones tu ausencia y no enfermedad je
__________________
Salu2!
  #7 (permalink)  
Antiguo 15/05/2014, 10:41
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: Crear un array de objetos

Bueno, sé que el bucle Do-While siempre ejecuta el código que tenga adentro al menos una vez aunque no se cumpla la condición final, entonces, en este caso, hago la pregunta y verifico la respuesta, de ser positiva, asigno los datos al objeto e inserto a este último en el array y como la respuesta a la pregunta fue positiva, continua el ciclo y vuelvo a preguntar y así sucesivamente. Si fuera una respuesta negativa, simplemente no se realiza la inserción de datos y se termina el ciclo.

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
  #8 (permalink)  
Antiguo 15/05/2014, 10:47
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Crear un array de objetos

Cita:
Iniciado por Alexis88 Ver Mensaje
Bueno, sé que el bucle Do-While siempre ejecuta el código que tenga adentro al menos una vez aunque no se cumpla la condición final, entonces, en este caso, hago la pregunta y verifico la respuesta, de ser positiva, asigno los datos al objeto e inserto a este último en el array y como la respuesta a la pregunta fue positiva, continua el ciclo y vuelvo a preguntar y así sucesivamente. Si fuera una respuesta negativa, simplemente no se realiza la inserción de datos y se termina el ciclo.

Saludos
Tu mismo te estas dando la respuesta: no es la eleccion correcta de estructura de control

while() y do()..while son cosas distintas

Si usas do()..while te pasas por una vez cuando quieres salirte y el if() no es mas que un parche, y los parches no son buenos
__________________
Salu2!
  #9 (permalink)  
Antiguo 15/05/2014, 10:51
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: Crear un array de objetos

Es que si te fijas, yo no hago la pregunta antes del bucle, la hago ahí mismo por el tema de que se ejecutará al menos una vez y necesariamente se tiene que realizar la pregunta al menos una vez, pero siempre hay mejores formas de hacerlo. Por cierto, también hubiera sido válido que lo dejes así: while(r), aunque creo que eso ya lo sabes. Tampoco olvides el uso de var para declarar variables, se te pasó al crear el objeto.

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
  #10 (permalink)  
Antiguo 15/05/2014, 10:59
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Crear un array de objetos

Cita:
Iniciado por Alexis88 Ver Mensaje
Es que si te fijas, yo no hago la pregunta antes del bucle, la hago ahí mismo por el tema de que se ejecutará al menos una vez y necesariamente se tiene que realizar la pregunta al menos una vez, pero siempre hay mejores formas de hacerlo. Por cierto, también hubiera sido válido que lo dejes así: while(r), aunque creo que eso ya lo sabes. Tampoco olvides el uso de var para declarar variables, se te pasó al crear el objeto.
Bueno... si yo tambien la embarro

Te lo digo por lo de siempre, mas alla del interprete que puede optimizar por donde uno no se lo imagina, en teoria es mas eficiente sino andas haciendo una pregunta de mas por cada iteración
__________________
Salu2!

Etiquetas: objetos
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:24.