1
resposta

[Desafio] Amigo Secreto

GitHub: https://github.com/Alekzinho/Projeto-Amigo-Secreto

Desafio 1: Remover nome da lista

Código em JS

let nomes = [];

function adicionar() {
    let inputNome = document.getElementById("nome-amigo").value.trim();
    
    if (inputNome == "") {
        alert("Insira um nome.");
        return;
    }

    if (nomes.includes(inputNome)) {
        alert("Ops, este nome ja foi adicionado!");
        return;
    }

    
    nomes.push(inputNome);

    listaAmigosIncluidos ();
        
    document.getElementById("nome-amigo").value = "";
    
    if (document.getElementById("lista-sorteio").innerHTML !== "") {
        document.getElementById("lista-sorteio").innerHTML = "";
    }

}
// Desafio 1: Remover nome da lista
   function listaAmigosIncluidos() {
    lista = document.getElementById("lista-amigos");
    lista.innerHTML = "";

    for (let i = 0; i < nomes.length; i++) {
        let nome = `<a onclick="remover(${i + 1})" id="nome-clicavel${i + 1}" class="nomes">${nomes[i]}</a>`;
        
        if (lista.innerHTML == "") {
        lista.innerHTML = nome;
        } else {
            lista.innerHTML = lista.innerHTML + ", " + nome; 
            }
    }
}

function remover(indice) {
    let nomeRemovido = document.getElementById(`nome-clicavel${indice}`);
    let indexDaLista = nomes.indexOf(nomeRemovido.innerHTML);
    nomes.splice(indexDaLista, 1);
    nomeRemovido.remove();
    
    listaAmigosIncluidos();

    if (document.getElementById("lista-sorteio").innerHTML = "") {
        return;
    } else {
        document.getElementById("lista-sorteio").innerHTML = "";
    }
}

Código em CSS

/* Desafio 1: Remover nome da lista */
.nomes {
  color: #fff;
  cursor: pointer;
  text-decoration: none;
  font-size: 21px;
  font-weight: 400;
  line-height: 160%; 
}

/* Desafio 1: Remover nome da lista */
.nomes:hover {
  color: gray;
}

.prizeDraw__container {
  color: #fff;
  font-size: 21px;
  font-style: italic;
  font-weight: 700;
  height: 199px;
  line-height: 160%;
  margin-top: 1rem;
  /* Desafio 1: Remover nome da lista */
  overflow: auto;
}

Desafio 2: Manipulando listas

// Desafio 2: Manipulando listas
let minhaLista = [1,2,3];
let nummero4 = [4];
let nummero5 = [5];
let nummero6 = [6];
let novaLista = minhaLista.concat(nummero4, nummero5, nummero6);

console.log(novaLista);

Desafio 3: Removendo o último item

// Desafio 3: Removendo último item
novaLista.pop();

console.log(novaLista);

Desafio 4: Algoritimo Fisher-Yates( ou Knuth Shuffle)

// Desafio 4: Algoritimo Fisher-Yates( ou Knuth Shuffle)
function algoritimoFisherYates(lista) {
  for (let i = lista.length -1; i > 0; i--) {
    let j = Math.floor(Math.random() * (i+1));
    lista[i] = lista[j];
  }
}

algoritimoFisherYates(novaLista);
console.log(novaLista);

Desafio 5: Removendo duplicatas

// Desafio 5: Removendo duplicatas
function removerDuplicatas(lista) {
    let listaSemDuplicatas = new Set(lista);
    console.log([...listaSemDuplicatas]);
}

removerDuplicatas(novaLista);
1 resposta

Boa tarde, Alex! Como está?

Incrível demais, você desenvolveu um ótimo projeto!

Notei que você utilizou o método concat() para unir listas de forma dinâmica, aplicou de forma eficaz o algoritmo Fisher-Yates para embaralhar os elementos com aleatoriedade controlada e compreendeu a importância do objeto Set para eliminar duplicatas e garantir a integridade dos dados.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!