1
resposta

11 Desafio: hora da prática

//01


let amigos = [];

// Adiciona um amigo à lista
function adicionar() {
    let inputAmigo = document.getElementById('nome-amigo');
    let nome = inputAmigo.value();
    
    if (nome === '') {
        alert("Por favor, insira um nome.");
        return;
    }
    
    if (amigos.includes(nome)) {
        alert("Este nome já foi adicionado.");
        return;
    }
    
    amigos.push(nome);
    atualizarListaAmigos();
    inputAmigo.value = '';
}

// Atualiza a visualização da lista de amigos
function atualizarListaAmigos() {
    let lista = document.getElementById('lista-amigos');
    lista.innerHTML = '';
    
    amigos.forEach((nome) => {
        let li = document.createElement('li');
        li.textContent = nome;
        li.style.cursor = 'pointer';
        li.title = 'Clique para remover este amigo';
        li.addEventListener('click', () => removerAmigo(nome));
        lista.appendChild(li);
    });
}

// Remove um amigo da lista
function removerAmigo(nome) {
    let index = amigos.indexOf(nome);
    if (index !== -1) {
        amigos.splice(index, 1);
        atualizarListaAmigos();
    }
}

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

    for (let i = 0; i < amigos.length; i++) {
        let proximo = (i === amigos.length - 1) ? amigos[0] : amigos[i + 1];
        sorteio.innerHTML += `${amigos[i]} --> ${proximo}<br/>`;
    }
}

// Embaralha a lista de amigos usando Fisher-Yates
function embaralhar(lista) {
    for (let i = lista.length; i > 0; i--) {
        const indiceAleatorio = Math.floor(Math.random() * i);
        [lista[i - 1], lista[indiceAleatorio]] = [lista[indiceAleatorio], lista[i - 1]];
    }
}

// Reinicia o sorteio e a lista de amigos
function reiniciar() {
    amigos = [];
    document.getElementById('lista-amigos').innerHTML = '';
    document.getElementById('lista-sorteio').innerHTML = '';
}

//02

let lista = [1, 2, 3]; 
let outraLista = [4, 5, 6]; 


let novaLista = lista.concat(outralista);
 console.log = novaLista;

 //03

 novaLista.pop();
 console.log(novaLista);

 //04

 function embaralhaarray(array){ 
 for (let i = array.length; i > 0; i--) {
        const indiceAleatorio = Math.floor(Math.random() * i);
        [array[i - 1], array[indiceAleatorio]] = [array[indiceAleatorio], array[i - 1]];
    }
}
embaralharArray(novaLista);
console.log("novaLista após embaralhar:", novaLista);


//05

function removerDuplicatas(array) {
    let novoArray = [];
    array.forEach(item => {
        if (!novoArray.includes(item)) {
            novoArray.push(item);
        }
    });
    return novoArray;
}

let semDuplicatas = removerDuplicatas(novaLista);
console.log("novaLista sem duplicatas:", semDuplicatas);


1 resposta

Olá, Leonardo, como vai?

No desafio 1, a lógica geral está correta e a funcionalidade de remover ao clicar no nome foi bem implementada. Há apenas um ponto a ajustar: em adicionar(), você utilizou inputAmigo.value() como se fosse função. O correto é acessar a propriedade, ou seja, inputAmigo.value.

No desafio 2, há dois ajustes necessários. Você declarou outraLista, mas utilizou outralista no concat(), o que causa erro por diferença de maiúsculas e minúsculas. Além disso, console.log = novaLista; sobrescreve a função console.log. O correto é chamar a função: console.log(novaLista);.

No desafio 4, você declarou function embaralhaarray(array), mas chamou embaralharArray(novaLista). O nome da função precisa ser exatamente o mesmo, respeitando maiúsculas e minúsculas.

A função removerDuplicatas está funcionando corretamente e demonstra boa compreensão do uso de includes e construção de um novo array.

Continue compartilhando suas soluções. O fórum permanece à disposição para as próximas evoluções.

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