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

[Dúvida] Duvida questão 4.

const numerosos = [4, 5, 7, 10, 6];


function verificarNumero(lista) {
    lista.map((arrNumeros) => {
        if(arrNumeros % 2 === 0){
            return `O número ${arrNumeros} é um número pár.`;
        }
    })
}

console.log(verificarNumero(numerosos)); //undefined

quando uso o console.log no lugar do return e apenas chamo a funcao colocando numerosos como parametro, ele me mostra os valores certinhos de quais são pares, mas quando uso o return e chamo usando o console.log, ele da undefined, o que fiz de errado?

1 resposta
solução!

Boa noite João! O problema ocorre por conta de que quando você usa uma função que percorre objetos, no caso o map, o retorno dentro deles serve para sair do laço de repetição. Então no caso do seu código você sai do laço de repetição e depois não acontece mais nada e não retorna nenhum valor para quem está chamando, assim ocasionando o undefined no console.log. Para solucionar isso, você pode criar uma variavel externa ao loop que recebe o valor que deseja retornar, segue código ajustado:

const numerosos = [4, 5, 7, 10, 6];


function verificarNumero(lista) {
    var numeroParaRetornar = 0;
    
    lista.map((arrNumeros) => {
        if(arrNumeros % 2 === 0){
            numeroParaRetornar = arrNumeros;
        }
    })
    return numeroParaRetornar;
}

console.log(verificarNumero(numerosos)); //6

Deixando claro que para essa implementação, no loop sempre vai ser reescrito o valor da variavel, então o valor do console será sempre do último numero que entrou na condição if, caso queira mostrar no console todos os números que atendem a condição do if, será necessário que a váriavel seja um array e sempre que entrar no if executar um push nesse array.

Espero ter ajudado, fico à disposição!