Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

355
Visualizações
¿Por qué se devuelve 'indefinido' al comparar un argumento de función con una cadena de una función?

Creé cpuPlay para llamar a piedra, papel o tijera, cada vez que se llama un número aleatorio entre 0 y 2. Esta función funciona correctamente, pero rps() es la función que parece que no puedo construir correctamente después de 3 días de hacer esto. No importa cómo construya esto, parece que sigo obteniendo una de cuatro respuestas cuando llamo a rps(). Las respuestas que obtengo son 'piedra', 'papel', 'tijeras', 'indefinido' .

Antes pensé que era porque usé .toLowerCase() en playerChoice, pero de cualquier manera, esta función ha estado dando los mismos resultados. Si continúa ejecutando rps('paper'), eventualmente se muestra. No estoy seguro de cómo debo ir más allá con este problema, o tal vez se supone que no debo poder comparar. Ya ni siquiera sé.

 function cpuPlay(){ let numberGen = Math.floor(Math.random() * 3) if (numberGen === 0){ return 'rock' } if (numberGen === 1){ return 'paper' } if (numberGen === 2){ return 'scissors' } } // cpuPlay() function rps(playersChoice){ if(playersChoice == 'paper' && cpuPlay() == 'rock'){ console.log('rock') } else if (playersChoice == 'paper' && cpuPlay() == 'paper'){ console.log('paper') } else if (playersChoice == 'paper' && cpuPlay() == 'scissors'){ console.log('scissors'); } } rps('paper')
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Está llamando a cpuPlay() en cada expresión, por lo que es posible que cada condicional falle, porque el valor de cpuPlay() está cambiando, puede probar esto:

 function cpuPlay(){ let numberGen = Math.floor(Math.random() * 3) if (numberGen === 0){ return 'rock' } if (numberGen === 1){ return 'paper' } if (numberGen === 2){ return 'scissors' } } function rps(playersChoice){ let currentCpuPlay = cpuPlay() if(playersChoice == 'paper' && currentCpuPlay == 'rock'){ console.log('rock') } else if (playersChoice == 'paper' && currentCpuPlay == 'paper'){ console.log('paper') } else if (playersChoice == 'paper' && currentCpuPlay == 'scissors'){ console.log('scissors'); } } rps('paper')

about 4 years ago · Juan Pablo Isaza Relatório

0

cpuPlay() genera un valor aleatorio cada vez que lo llamas .

Estás generando un valor aleatorio y comparándolo con rock . Luego genera un nuevo valor aleatorio y lo compara con paper . Luego genera un tercer valor aleatorio y lo compara con scissors .

Debe generar la respuesta del reproductor de la CPU una vez , en la parte superior de la función de comparación y luego comparar ese valor cada vez.

 function rps(playersChoice){ const cpuChoice = cpuPlay(); if(playersChoice == 'paper' && cpuChoice == 'rock'){
about 4 years ago · Juan Pablo Isaza Relatório

0

el cpuPlay() está devolviendo resultados aleatorios en cada declaración if

entonces, cuando en el primer if y el resultado no es rock, saltará a la siguiente declaración nuevamente, luego, pero en el segundo if , cpuPlay() está devolviendo resultados diferentes, por lo que al final su función tiene la posibilidad de no tener resultados.

 function rps(playersChoice){ let cpuRoll = cpuPlay(); // only random once per game if(playersChoice == 'paper' && cpuRoll == 'rock'){ console.log('rock') } else if (playersChoice == 'paper' && cpuRoll == 'paper'){ console.log('paper') } else if (playersChoice == 'paper' && cpuRoll == 'scissors'){ console.log('scissors'); } }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda