|
| 1 | +/* |
| 2 | + * EJERCICIO: |
| 3 | + * - Muestra ejemplos de creación de todas las estructuras soportadas por defecto en tu lenguaje. |
| 4 | + * - Utiliza operaciones de inserción, borrado, actualización y ordenación. |
| 5 | + * |
| 6 | + * DIFICULTAD EXTRA (opcional): |
| 7 | + * Crea una agenda de contactos por terminal. |
| 8 | + * - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos. |
| 9 | + * - Cada contacto debe tener un nombre y un número de teléfono. |
| 10 | + * - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación |
| 11 | + * los datos necesarios para llevarla a cabo. |
| 12 | + * - El programa no puede dejar introducir números de teléfono no númericos y con más de 11 dígitos. |
| 13 | + * (o el número de dígitos que quieras) |
| 14 | + * - También se debe proponer una operación de finalización del programa. |
| 15 | +*/ |
| 16 | + |
| 17 | +// +++++++++ ARRAY +++++++++ |
| 18 | +var colores = ["Blanco", "Azul", "Naranja"]; |
| 19 | + |
| 20 | +colores.push("Verde"); // Añade un elemento al final. |
| 21 | +colores.splice(2, 1); // Elimina el elemento en el índice 2. |
| 22 | +colores[2] = "Rojo"; // Actualiza el elemento en el índice 2. |
| 23 | +colores.sort(); // Ordena los elementos alfabéticamente. |
| 24 | +console.log(colores); |
| 25 | + |
| 26 | +// +++++++++ OBJECT +++++++++ |
| 27 | +var bountyHunter = { |
| 28 | + name: "-", |
| 29 | + height: "1.9m", |
| 30 | + specie: "Human", |
| 31 | +} |
| 32 | + |
| 33 | +bountyHunter.lastName = "Aran"; // Añade un nuevo elemento. |
| 34 | +delete bountyHunter.specie; // Elimina una propiedad. |
| 35 | +bountyHunter.name = "Samus"; // Modifica el valor de una propiedad existente. |
| 36 | +Object.keys(bountyHunter).sort(); // Ordena las propiedad alfabéticamente, pero convierte el objeto en un arreglo. |
| 37 | +console.log(bountyHunter); |
| 38 | + |
| 39 | +// +++++++++ DIFICULTAD EXTRA +++++++++ |
| 40 | +var menu = "Por favor, ingrese el número de la opción que desea ejecutar:\n1) Agregar.\n2) Actualizar.\n3) Eliminar.\n4) Buscar.\n5) Salir." |
| 41 | +var selectedOption = 0; |
| 42 | +var directory = []; |
| 43 | + |
| 44 | +function addContact() { |
| 45 | + var name = prompt("Por favor, ingrese el nombre del contacto:"); |
| 46 | + var newContact = {Nombre: name}; |
| 47 | + var stringPhone = prompt("Por favor, ingrese el teléfono del contacto con 10 dígitos:"); |
| 48 | + var phoneNumber = parseInt(stringPhone, 10); |
| 49 | + |
| 50 | + if (/^[0-9.,]+$/.test(phoneNumber) && stringPhone.length === 10) { |
| 51 | + newContact.Telefono = phoneNumber; |
| 52 | + directory.push(newContact); |
| 53 | + } else { |
| 54 | + alert("Debe ingresar un número de teléfono conformado por 10 dígitos."); |
| 55 | + } |
| 56 | +} |
| 57 | + |
| 58 | +function updateContact() { |
| 59 | + var name = prompt("Por favor, ingrese el nombre del contacto a actualizar:"); |
| 60 | + |
| 61 | + function searchContact(contact) { |
| 62 | + return contact.Nombre === name; |
| 63 | + } |
| 64 | + |
| 65 | + var results = directory.find(searchContact); |
| 66 | + var newName = prompt("Por favor, ingrese el nombre nuevo:"); |
| 67 | + |
| 68 | + var stringnewPhone = prompt("Por favor, ingrese el teléfono nuevo con 10 dígitos:"); |
| 69 | + var newPhoneNumber = parseInt(stringnewPhone, 10); |
| 70 | + |
| 71 | + if (/^[0-9.,]+$/.test(newPhoneNumber) && stringnewPhone.length === 10) { |
| 72 | + results.Nombre = newName; |
| 73 | + results.Telefono = newPhoneNumber; |
| 74 | + } else { |
| 75 | + alert("Debe ingresar un número de teléfono conformado por 10 dígitos."); |
| 76 | + } |
| 77 | +} |
| 78 | + |
| 79 | +function deleteContact() { |
| 80 | + var name = prompt("Por favor, ingrese el nombre del contacto que desea eliminar:"); |
| 81 | + |
| 82 | + function searchContact(contact) { |
| 83 | + return contact.Nombre === name; |
| 84 | + } |
| 85 | + |
| 86 | + var results = directory.findIndex(searchContact); |
| 87 | + |
| 88 | + if (results >= 0) { |
| 89 | + directory.splice(results, 1); |
| 90 | + } else { |
| 91 | + alert("El contacto no pudo ser eliminado porque no existe."); |
| 92 | + } |
| 93 | +} |
| 94 | + |
| 95 | +function searchContact() { |
| 96 | + var name = prompt("Por favor, ingrese el nombre del contacto que desea buscar:"); |
| 97 | + |
| 98 | + function searchContact(contact) { |
| 99 | + return contact.Nombre === name; |
| 100 | + } |
| 101 | + |
| 102 | + var results = directory.find(searchContact); |
| 103 | + |
| 104 | + if (results === undefined) { |
| 105 | + alert("El contacto no existe."); |
| 106 | + } else { |
| 107 | + alert("Nombre: " + results.Nombre + "\n" + "Teléfono: " + results.Telefono); |
| 108 | + } |
| 109 | +} |
| 110 | + |
| 111 | +do { |
| 112 | + selectedOption = parseInt(prompt(menu), 10); |
| 113 | + |
| 114 | + switch (selectedOption) { |
| 115 | + case 1: |
| 116 | + addContact(); |
| 117 | + break; |
| 118 | + |
| 119 | + case 2: |
| 120 | + updateContact(); |
| 121 | + break; |
| 122 | + |
| 123 | + case 3: |
| 124 | + deleteContact(); |
| 125 | + break; |
| 126 | + |
| 127 | + case 4: |
| 128 | + searchContact(); |
| 129 | + break; |
| 130 | + |
| 131 | + case 5: |
| 132 | + alert("Cerrando la agenda."); |
| 133 | + break; |
| 134 | + |
| 135 | + default: |
| 136 | + alert("Por favor, introduzca una opción del 1 al 5."); |
| 137 | + break; |
| 138 | + } |
| 139 | +} while (selectedOption !== 5); |
0 commit comments