Salta el contingut

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;
    }
};`;