1
resposta

[Dúvida] Amigo Secreto + desafios

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.

Não consegui fazer a função de exclusão funcionar, mesmo utilizando a solução dada pelo instrutor.

let listaAmigos = [];

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

    if (listaNomes.textContent === '' || listaNomes.textContent === null) {
        listaNomes.textContent = nome.value;
    } else {
        listaNomes.textContent = listaNomes.textContent + ', ' + nome.value;
    }
    
    nome.value = '';
    atualizarSorteio()
    atualizarLista();
}


function sortear() {
    embaralhar(listaAmigos); 
    let sorteio = document.getElementById('lista-sorteio');

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


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 reiniciar() {
    let botaoreiniciar = document.querySelector('a');
    botaoreiniciar.innerHTML
    listaAmigos = [];
    document.getElementById('lista-amigos').innerHTML = '';
    document.getElementById('lista-sorteio').innerHTML = '';

}


function excluirAmigo() {
    listaAmigos.splice(index, 1);
    atualizarSorteio();
    atualizarLista();
}


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


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

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


        
        lista.appendChild(paragrafo);
    }
}

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.

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

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.

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.

Etapas 2 a 5 abaixo:

let lista1 = [];
lista1.push(1,2,2,3);

let lista2 = [];
lista2.push(4,5,6,6);

let lista3 = lista1.concat(lista2);

lista3.pop()
console.log(lista3)


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

  lista3 = embaralharArray(lista3);
  console.log(lista3)


  function removerDuplicatas(array) {
    return [...new Set(array)];
  }

  let lista4NoDuplicatas = removerDuplicatas(lista3)
  console.log(lista4NoDuplicatas)
1 resposta

Olá boa noite! esse index na função excluirAmigo não deveria ser passado como parâmetro na função?

function excluirAmigo(lista, index) {
    lista.splice(index, 1);
    atualizarSorteio();
    atualizarLista();
}

assim quando chamar a função excluirAmigo você informa pelo parâmetro qual lista deve ter o amigo excluído e qual index deve ser excluído. para as outras funções que modificam a lista com os amigos poderia ser feito o mesmo, pedir uma lista como parâmetro na função e qd chamar coloca a variável com a listaAmigos como parâmetro