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