2
respostas

[Sugestão] Respostas Desafio Praticando Lógica de JS Mod 5 Item 11

Caso alguém busque uma nova alternativa para as respostas do desafio do Projeto Amigo Secreto do curso Praticando Lógica de JavaScript: https://cursos.alura.com.br/course/logica-programacao-praticando-desafios/task/146029

//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 = [1,2,3];
let outraLista = [4,5,6];

let novaLista = minhaLista.concat(outraLista);

console.log(novaLista);

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

let excluir = novaLista.pop(novaLista.length - 1);

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.

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

embaralha(novaLista);

console.log(novaLista);

//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.

    //coloca um item duplicado aleatório

function duplicar(lista){
    let contemLista = lista.length;

    let aleatorio = lista[Math.floor(Math.random() * contemLista)];

    lista.push(aleatorio);
     
}  

duplicar(novaLista);

console.log(novaLista);

    //Agora iremos remover o duplicado.
function removerDuplicatas(lista){

    //i inicia em 0 e vai adicionando 1 até que chegue no mesmo número da lista
    for(let i = 0; i < lista.length; i++) {

        //Na condicional, ele busca o item da lista que é duplicado, e mostra no console
        if(lista.indexOf(lista[i]) != i) {
            console.log(lista[i])
        };
    }

    //Aqui retiramos o item duplicado e mostramos no console.
    lista.pop(lista[i]);

    console.log(lista);

}

removerDuplicatas(novaLista);
2 respostas

Olá João, tudo bem?

Obrigado por postar no fórum e compartilhar seu código do projeto Amigo Secreto!

Gostei muito da maneira como você utilizou o método concat() para combinar as duas listas, é uma abordagem clara e eficiente.

Uma curiosidade interessante: para remover duplicatas de forma mais simplificada, você poderia usar o objeto Set do JavaScript, que não permite elementos duplicados. Aqui está um exemplo de como você poderia fazer isso:

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

novaLista = removerDuplicatas(novaLista);
console.log(novaLista);

Continue praticando e compartilhando seus códigos! Se precisar de mais alguma coisa, estamos aqui para ajudar.

Bons estudos!

Muito Obrigado, não conhecia esse comando set!!