Solucions dels Exercicis UT04 - Estructures definides per l'usuari en JavaScript¶
Exercici 1: Array de números - Suma total¶
const numeros = [10, 20, 15, 30, 25];
function calcularSuma(array) {
let suma = 0;
for (let i = 0; i < array.length; i++) {
suma += array[i];
}
return suma;
}
console.log(calcularSuma(numeros)); // 100
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 20" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 2: Buscar element duplicat¶
const array1 = [1, 2, 3, 4, 3, 5];
const array2 = [1, 2, 3, 4, 5];
function teDuplicats(array) {
for (let i = 0; i < array.length; i++) {
for (let j = i + 1; j < array.length; j++) {
if (array[i] === array[j]) {
return true;
}
}
}
return false;
}
console.log(teDuplicats(array1)); // true
console.log(teDuplicats(array2)); // false
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 2" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 3: Invertir array¶
const original = [1, 2, 3, 4, 5];
function invertirArray(array) {
const invertit = [];
for (let i = array.length - 1; i >= 0; i--) {
invertit.push(array[i]);
}
return invertit;
}
console.log(invertirArray(original)); // [5, 4, 3, 2, 1]
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 3" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 4: Filtrar números pars¶
const numeros = [1, 2, 3, 4, 5, 6, 7, 8];
function filtrarPars(array) {
const pars = [];
for (let i = 0; i < array.length; i++) {
if (array[i] % 2 === 0) {
pars.push(array[i]);
}
}
return pars;
}
console.log(filtrarPars(numeros)); // [2, 4, 6, 8]
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 4" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 5: Contar ocurrències¶
const animals = ["gat", "gos", "gat", "ocell", "gat"];
function contarOcurrencies(array, element) {
let contador = 0;
for (let i = 0; i < array.length; i++) {
if (array[i] === element) {
contador++;
}
}
return contador;
}
console.log(contarOcurrencies(animals, "gat")); // 3
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 5" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 6: Trobar el número més gran¶
const numeros = [15, 42, 8, 99, 23, 67];
function trobarMesGran(array) {
let major = array[0];
for (let i = 1; i < array.length; i++) {
if (array[i] > major) {
major = array[i];
}
}
return major;
}
console.log(trobarMesGran(numeros)); // 99
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 6" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 7: Combinar dos arrays¶
const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
function combinarArrays(arr1, arr2) {
const combinat = [];
for (let i = 0; i < arr1.length; i++) {
combinat.push(arr1[i]);
}
for (let i = 0; i < arr2.length; i++) {
combinat.push(arr2[i]);
}
return combinat;
}
console.log(combinarArrays(array1, array2)); // [1, 2, 3, 4, 5, 6]
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 7" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 8: Eliminar duplicats¶
const numeros = [1, 2, 2, 3, 3, 3, 4, 5, 5];
function eliminarDuplicats(array) {
const unics = [];
for (let i = 0; i < array.length; i++) {
if (!unics.includes(array[i])) {
unics.push(array[i]);
}
}
return unics;
}
console.log(eliminarDuplicats(numeros)); // [1, 2, 3, 4, 5]
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 8" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 9: Dividir array en chunks¶
const numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const mida = 3;
function dividirEnChunks(array, mida) {
const chunks = [];
for (let i = 0; i < array.length; i += mida) {
chunks.push(array.slice(i, i + mida));
}
return chunks;
}
console.log(dividirEnChunks(numeros, mida)); // [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 9" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 10: Crear un objecte estudiants¶
const estudiant = {
nom: "Maria",
nota: 7.5,
assignatura: "JavaScript",
haAprovat: function() {
return this.nota >= 5;
}
};
console.log(estudiant.nom); // "Maria"
console.log(estudiant.haAprovat()); // true
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 19" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 20: Crear agenda de cites¶
const agenda = {
cites: [],
afegirCita: function(data, hora, descripcio) {
this.cites.push({ data: data, hora: hora, descripcio: descripcio });
},
eliminarCita: function(data) {
for (let i = 0; i < this.cites.length; i++) {
if (this.cites[i].data === data) {
this.cites.splice(i, 1);
return true;
}
}
return false;
},
cercarCita: function(data) {
for (let i = 0; i < this.cites.length; i++) {
if (this.cites[i].data === data) {
return this.cites[i];
}
}
return null;
},
llistarCites: function() {
return this.cites;
}
};
agenda.afegirCita("2025-11-15", "10:00", "Reunió amb client");
agenda.afegirCita("2025-11-16", "14:30", "Visita mèdica");
agenda.afegirCita("2025-11-17", "09:00", "Entrega projecte");
console.log(agenda.llistarCites());
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 20" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 11: Array de contactes¶
const contactes = [
{ nom: "Joan", telefon: "123456789" },
{ nom: "Maria", telefon: "987654321" },
{ nom: "Pere", telefon: "555555555" }
];
function cercarContacte(array, nom) {
for (let i = 0; i < array.length; i++) {
if (array[i].nom === nom) {
return array[i];
}
}
return null;
}
console.log(cercarContacte(contactes, "Maria")); // { nom: "Maria", telefon: "987654321" }
console.log(cercarContacte(contactes, "Luis")); // null
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 11" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 12: Calcular mitjana de notes¶
const estudiants = [
{ nom: "Joan", nota: 8 },
{ nom: "Anna", nota: 6 },
{ nom: "Pere", nota: 9 }
];
function calcularMitjana(array) {
let suma = 0;
for (let i = 0; i < array.length; i++) {
suma += array[i].nota;
}
return suma / array.length;
}
console.log(calcularMitjana(estudiants)); // 7.67
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 12" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 13: Ordenar array de números¶
const numeros = [45, 12, 89, 23, 56, 34];
function ordenarAscendent(array) {
const copiat = [...array];
for (let i = 0; i < copiat.length; i++) {
for (let j = i + 1; j < copiat.length; j++) {
if (copiat[i] > copiat[j]) {
let temp = copiat[i];
copiat[i] = copiat[j];
copiat[j] = temp;
}
}
}
return copiat;
}
console.log(ordenarAscendent(numeros)); // [12, 23, 34, 45, 56, 89]
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 13" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 14: Crear taula de multiplicar¶
function taulaMultiplicar(numero) {
const resultat = [];
for (let i = 1; i <= 10; i++) {
resultat.push(numero * i);
}
return resultat;
}
console.log(taulaMultiplicar(5)); // [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 14" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 15: Filtrar per propietat d'objecte¶
const productes = [
{ nom: "Laptop", preu: 800, disponible: true },
{ nom: "Ratolí", preu: 25, disponible: false },
{ nom: "Teclat", preu: 60, disponible: true },
{ nom: "Monitor", preu: 250, disponible: true }
];
function filtrarDisponibles(array) {
const disponibles = [];
for (let i = 0; i < array.length; i++) {
if (array[i].disponible) {
disponibles.push(array[i]);
}
}
return disponibles;
}
console.log(filtrarDisponibles(productes));
// Retorna només els productes amb disponible: true
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 15" src="" frameborder="no" loading="lazy" allowtransparency="true">
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 15" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 16: Concatenar strings d'un array¶
const tecnologies = ["JavaScript", "HTML", "CSS", "React"];
function concatenarStrings(array) {
let resultat = "";
for (let i = 0; i < array.length; i++) {
if (i < array.length - 1) {
resultat += array[i] + ", ";
} else {
resultat += array[i];
}
}
return resultat;
}
console.log(concatenarStrings(tecnologies)); // "JavaScript, HTML, CSS, React"
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 16" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 17: Crear objecte calculadora amb historial¶
const calculadora = {
historial: [],
sumar: function(a, b) {
const resultat = a + b;
this.historial.push(`${a} + ${b} = ${resultat}`);
return resultat;
},
restar: function(a, b) {
const resultat = a - b;
this.historial.push(`${a} - ${b} = ${resultat}`);
return resultat;
},
multiplicar: function(a, b) {
const resultat = a * b;
this.historial.push(`${a} × ${b} = ${resultat}`);
return resultat;
},
mostrarHistorial: function() {
return this.historial;
}
};
calculadora.sumar(10, 5);
calculadora.restar(20, 3);
calculadora.multiplicar(4, 6);
console.log(calculadora.mostrarHistorial());
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 17" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 18: Validar format email¶
function validarEmail(email) {
const posicioArroba = email.indexOf('@');
const posicioPunt = email.indexOf('.');
return posicioArroba !== -1 && posicioPunt !== -1 && posicioPunt > posicioArroba;
}
console.log(validarEmail("usuario@ejemplo.com")); // true
console.log(validarEmail("usuarioexemple.com")); // false
console.log(validarEmail("usuario@ejemplocom")); // false
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 18" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 19: Trobar números primers¶
function esNumeroPrimer(numero) {
if (numero <= 1) return false;
for (let i = 2; i < numero; i++) {
if (numero % i === 0) return false;
}
return true;
}
function filtrarPrimers(array) {
const primers = [];
for (let i = 0; i < array.length; i++) {
if (esNumeroPrimer(array[i])) {
primers.push(array[i]);
}
}
return primers;
}
const numeros = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
console.log(filtrarPrimers(numeros)); // [2, 3, 5, 7, 11]
<iframe height="300" style="width: 100%;" scrolling="no" title="UT04 - Exercici 19" src="" frameborder="no" loading="lazy" allowtransparency="true">
</iframe>
Exercici 20: Crear agenda de cites¶
HTML¶
<div class="container">
<header>
<h1>Exercici 20: Agenda de cites</h1>
<p class="description">Gestiona una agenda de cites amb afegir, eliminar i cercar.</p>
</header>
<section class="output">
<h2>Resultat:</h2>
<div id="result"></div>
</section>
<section class="code">
<h2>Codi:</h2>
<pre><code id="codeDisplay"></code></pre>
</section>
</div>
JavaScript¶
const agenda = {
cites: [],
afegirCita: function(data, hora, descripcio) {
this.cites.push({ data: data, hora: hora, descripcio: descripcio });
},
eliminarCita: function(data) {
for (let i = 0; i < this.cites.length; i++) {
if (this.cites[i].data === data) {
this.cites.splice(i, 1);
return true;
}
}
return false;
},
cercarCita: function(data) {
for (let i = 0; i < this.cites.length; i++) {
if (this.cites[i].data === data) {
return this.cites[i];
}
}
return null;
},
llistarCites: function() {
return this.cites;
}
};
agenda.afegirCita("2025-11-15", "10:00", "Reunió amb client");
agenda.afegirCita("2025-11-16", "14:30", "Visita mèdica");
agenda.afegirCita("2025-11-17", "09:00", "Entrega projecte");
const resultElement = document.getElementById('result');
let resultatText = "<p>Cites agendades:</p>";
for (let cita of agenda.llistarCites()) {
resultatText += `<p>${cita.data} - ${cita.hora}: ${cita.descripcio}</p>`;
}
resultElement.innerHTML = resultatText;
document.getElementById('codeDisplay').textContent = `const agenda = {
cites: [],
afegirCita: function(data, hora, descripcio) {
this.cites.push({ data: data, hora: hora, descripcio: descripcio });
},
eliminarCita: function(data) {
for (let i = 0; i < this.cites.length; i++) {
if (this.cites[i].data === data) {
this.cites.splice(i, 1);
return true;
}
}
return false;
},
cercarCita: function(data) {
for (let i = 0; i < this.cites.length; i++) {
if (this.cites[i].data === data) {
return this.cites[i];
}
}
return null;
},
llistarCites: function() {
return this.cites;
}
};`;