1
resposta

[Projeto] Projeto Amigo Secreto - Hora da prática

  • Criar uma funcionalidade no Projeto Amigo Secreto que permita ao usuário clicar em um amigo na lista e removê-lo. Atualizar a visualização da lista após a remoção.
let amigos = [];

function adicionar() {
    let amigo = document.getElementById('nome-amigo');
    let lista = document.getElementById('lista-amigos');

    if(amigo.value === '') {
        alert ('Digite um nome para adicionar.');
        amigo.value = '';
        return;
    }
    
    if (amigos.includes(amigo.value)) {
        alert (`O nome ${amigo.value} já foi adicionado. Por favor, insira um nome diferente.`);
        amigo.value = '';
        return;
    }

    amigos.push(amigo.value);

    if (lista.textContent == '') {
        lista.textContent = amigo.value;
    } else {
        lista.textContent = lista.textContent + ', ' + amigo.value;
    }

    amigo.value = '';

    atualizarLista();
    atualizarSorteio();
}

function sortear() {
    if (amigos.length < 4) {
        alert ('É necessário ter pelo menos 4 participantes para realizar o sorteio');
        return;
    }
    embaralhar(amigos);
    let sorteio = document.getElementById('lista-sorteio');

    for (let i = 0; i < amigos.length; i++) {
        if (i == amigos.length - 1) {
            sorteio.innerHTML = sorteio.innerHTML + amigos[i] + ' --> ' + amigos[0] + '<br>';
        } else {
            sorteio.innerHTML = sorteio.innerHTML + amigos[i] + ' --> ' + amigos[i + 1] + '<br>';
            }
    }
}

function excluirNome(index) {
    amigos.splice(index, 1);
    atualizarLista();
    atualizarSorteio();
}

function embaralhar(lista) {
    for (let indice = lista.length; indice; indice--) {
        const indiceAleatorio = Math.floor(Math.random() * indice);
        [lista[indice - 1], lista[indiceAleatorio]] = [lista[indiceAleatorio], lista[indice - 1]];
    }
}

function atualizarSorteio() {
    let sorteio = document.getElementById('lista-sorteio');
    sorteio.innerHTML = '';
}

function atualizarLista() {
    let lista = document.getElementById('lista-amigos');
    lista.innerHTML = '';

    for (let i = 0; i < amigos.length; i++) {
        let paragrafo = document.createElement('p');
        paragrafo.textContent = amigos[i];
        paragrafo.addEventListener('click', function() {
            excluirNome(i);
        });

        lista.appendChild(paragrafo);
    }
}

function reiniciar() {
    amigos = [];
    document.getElementById('lista-amigos').innerHTML = '';
    document.getElementById('lista-sorteio').innerHTML = '';
}
  • Adicione os números 1,2,3 em uma variável chamada minhaLista e armazene os números 4, 5 e 6 separadamente em outra variável. Use o método concat() para combinar as sequências de valores em uma nova lista chamadanovaLista. Imprima novaLista no console.
let minhaLista = [];
let outraLista = [4, 5, 6];

minhaLista.push(1, 2, 3);

let novaLista = minhaLista.concat(outraLista);
console.log(novaLista);
  • Remova o último elemento de novaLista. Imprima novaLista após a remoção.
let minhaLista = [];
let outraLista = [4, 5, 6];

minhaLista.push(1, 2, 3);

let novaLista = minhaLista.concat(outraLista);
console.log(novaLista);

let excluirNum = novaLista.splice(5);
console.log(novaLista);
  • Utilize o algoritmo de Fisher-Yates (também conhecido como Knuth Shuffle) para embaralhar os elementos em novaLista. Pesquise e adapte o código para realizar o embaralhamento.
let minhaLista = [];
let outraLista = [4, 5, 6];

minhaLista.push(1, 2, 3);

let novaLista = minhaLista.concat(outraLista);
console.log(`Lista: ${novaLista}`);

let excluirNum = novaLista.splice(5);
console.log(`Excluindo um número: ${novaLista}`);

embaralhar(novaLista);
console.log(`Embaralhando lista: ${novaLista}`);

function embaralhar(lista) {
    for (let indice = lista.length; indice; indice--) {
        const indiceAleatorio = Math.floor(Math.random()*indice);
        const elemento = lista[indice -1];
        lista[indice -1] = lista[indiceAleatorio];
        lista[indiceAleatorio] = elemento
    }
}
  • Crie uma função chamada removerDuplicatas que aceita um array como parâmetro e retorna um novo array sem elementos duplicados. Teste a função com novaLista e imprima o array resultante.
let minhaLista = [];
let outraLista = [3, 4, 5, 6];

minhaLista.push(1, 2, 3, 4, 5, 6);

let novaLista = minhaLista.concat(outraLista);
console.log(`Lista: ${novaLista}`);

removerDuplicatas(novaLista);

function removerDuplicatas(lista) {
    let listaUnica = [... new Set(lista)];
    console.log(`Excluindo repetições: ${listaUnica}`);
}

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá Aline, tudo bem?

Parabéns por sua dedicação em resolver não apenas o desafio principal do Amigo Secreto, mas também os exercícios extras! Suas soluções estão excelentes e demonstram um ótimo entendimento da manipulação de arrays em JavaScript.

É muito bom ver seu empenho e avanço nos estudos. Continue praticando e evoluindo cada vez mais!

Bons estudos!

Sucesso

Imagem da comunidade