Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Como usar uma validação de número par?

Percebi que mesmo inserindo a condição do número ser maior que 4, podemos ainda ter número ímpar de participantes, o que ocasionaria um problema. Como fazer uma condicional para que a lista seja ser maior que 4 e par?


let amigos= [];
function adicionar() {
    let novoAmigo = document.getElementById('nome-amigo');
    if (novoAmigo.value == '') {
        alert('Informe o nome do amigo!');
        return;
    }
    let listaDeAmigos = document.getElementById('lista-amigos');
    amigos.push(novoAmigo.value);
    if (listaDeAmigos.textContent == ''){
        listaDeAmigos.textContent = novoAmigo.value;
    } else {
        listaDeAmigos.textContent = novoAmigo.value + ',' + listaDeAmigos.textContent;
    }
    novoAmigo.value = '';

}
function sortear () {
    if (amigos.length < 4) {
        alert ('insira mais amigos!'); 
        return;
    }
embaralha (amigos);
let listaSorteio = document.getElementById('lista-sorteio');
for (let i =0; i < amigos.length; i++) {
    if (i === amigos.length - 1) {
        listaSorteio.innerHTML = listaSorteio.innerHTML + amigos[i] + ' --> ' + amigos[0] + '<br>';
    } else {
        listaSorteio.innerHTML = listaSorteio.innerHTML + amigos[i] + ' --> ' + amigos[i + 1] + '<br>';
    }     
}
}

function embaralha(lista) {

    for (let indice = lista.length; indice; indice--) {

        const indiceAleatorio = Math.floor(Math.random() * indice);

        // atribuição via destructuring
        [lista[indice - 1], lista[indiceAleatorio]] = 
            [lista[indiceAleatorio], lista[indice - 1]];
    }
}
function reiniciar () {
    amigos = [];
    document.getElementById('lista-amigos').innerHTML = '';
    document.getElementById('lista-sorteio').innerHTML = '';
}
1 resposta
solução!

Oi Vicente, tudo bem?

Você pode adicionar uma verificação adicional antes de permitir o sorteio, garantindo que o número de amigos seja maior que 4 e par.

let amigos = [];

function adicionar() {
    let novoAmigo = document.getElementById('nome-amigo');
    if (novoAmigo.value == '') {
        alert('Informe o nome do amigo!');
        return;
    }
    let listaDeAmigos = document.getElementById('lista-amigos');
    amigos.push(novoAmigo.value);
    if (listaDeAmigos.textContent == '') {
        listaDeAmigos.textContent = novoAmigo.value;
    } else {
        listaDeAmigos.textContent = novoAmigo.value + ',' + listaDeAmigos.textContent;
    }
    novoAmigo.value = '';
}

function sortear() {
    if (amigos.length < 4) {
        alert('Insira mais amigos!');
        return;
    }

    if (amigos.length % 2 !== 0) {
        alert('O número de amigos deve ser par!');
        return;
    }

    embaralha(amigos);
    let listaSorteio = document.getElementById('lista-sorteio');
    for (let i = 0; i < amigos.length; i++) {
        if (i === amigos.length - 1) {
            listaSorteio.innerHTML =
                listaSorteio.innerHTML + amigos[i] + ' --> ' + amigos[0] + '<br>';
        } else {
            listaSorteio.innerHTML =
                listaSorteio.innerHTML + amigos[i] + ' --> ' + amigos[i + 1] + '<br>';
        }
    }
}

function embaralha(lista) {
    for (let indice = lista.length; indice; indice--) {
        const indiceAleatorio = Math.floor(Math.random() * indice);
        // atribuição via destructuring
        [lista[indice - 1], lista[indiceAleatorio]] = [lista[indiceAleatorio], lista[indice - 1]];
    }
}

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

Essa modificação adiciona uma verificação para garantir que o número de amigos seja par antes de prosseguir com o sorteio. Se o número de amigos não for par, um alerta será exibido, indicando que é necessário ter um número par de participantes.

Um abraço e bons estudos.