1
resposta

Resolução de Atividades - 11 Desafio: hora da prática

// 1) 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.

Resposta: eu não entendi muito a questão de adicionar elementos no HTML diretamente, então não consegui fazer essa questão em específico.

// 2) 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 = [1, 2, 3];
let lista2 = [4, 5, 6];
let novaLista = minhaLista.concat (lista2);

console.log (novaLista);

// 3) Remova o último elemento de novaLista. Imprima novaLista após a remoção.

Resposta: Eu utilizei o método splice, mas vi que tem outros como o pop.

let minhaLista = [1, 2, 3];
let lista2 = [4, 5, 6];
let novaLista = minhaLista.concat (lista2);

console.log (novaLista);

novaLista.splice (novaLista.length - 1);

console.log (`A lista após a remoção: ${novaLista}`);

// 4) 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 = [1, 2, 3];
let lista2 = [4, 5, 6];
let novaLista = minhaLista.concat (lista2);

console.log (novaLista);

novaLista.splice (novaLista.length - 1);

console.log (`A lista após a remoção: ${novaLista}`);

function embaralharArray(array) {
    for (let i = array.length - 1; i > 0; i--) {
      const j = Math.floor(Math.random() * (i + 1));
      [array[i], array[j]] = [array[j], array[i]];
    }
    return array;
}

novaLista = embaralharArray (novaLista);

console.log (`A lsita após o embaralhamento: ${novaLista}`);

// 5) 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 = [1, 2, 3];
let lista2 = [4, 5, 6];
let novaLista = minhaLista.concat (lista2);

console.log (novaLista);

novaLista.splice (novaLista.length - 1);

console.log (`A lista após a remoção: ${novaLista}`);

function embaralharArray(array) {
    for (let i = array.length - 1; i > 0; i--) {
      const j = Math.floor(Math.random() * (i + 1));
      [array[i], array[j]] = [array[j], array[i]];
    }
    return array;
}

novaLista = embaralharArray (novaLista);

console.log (`A lista após o embaralhamento: ${novaLista}`);

novaLista = [1, 2, 3, 4, 5, 1, 2, 3, 6, 7, 8, 1, 2, 3, 4, 9, 1, 9, 10];

function removerDuplicatas (array) {

    return [...new Set(array)];

    //Set: uma lista que não permite duplicatas.
    // "...": Operador de distribuição (spread).
}

let listaFinal = removerDuplicatas (novaLista);

console.log ("A lista sem duplicatas: " + listaFinal);
1 resposta

Oi, Victor! Tudo bem?

Para adicionar a opção de excluir amigos da lista, podemos adicionar uma modificação que cria elementos de parágrafo

para cada amigo na lista e em seguida, adiciona um ouvinte de evento de clique a cada parágrafo, que chama a função excluirAmigo com o índice correspondente, como no exemplo:

let amigos = [];


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


    amigos.push(amigo.value);


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


    amigo.value = '';


    atualizarLista();
    atualizarSorteio();
}


function sortear() {
    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 excluirAmigo(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++) {
        // Cria um elemento de parágrafo para cada amigo
        let paragrafo = document.createElement('p');
        paragrafo.textContent = amigos[i];
       
        // Adiciona um evento de clique para excluir o amigo
        paragrafo.addEventListener('click', function() {
            excluirAmigo(i);
        });


        // Adiciona o parágrafo à lista
        lista.appendChild(paragrafo);
    }
}


function reiniciar() {
    amigos = [];
    document.getElementById('lista-amigos').innerHTML = '';
    document.getElementById('lista-sorteio').innerHTML = '';
}

Espero ter ajudado!

Um forte abraço e bons estudos!