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

103
Visualizações
Una forma más limpia de escribir este bloque de código JS

Estoy siguiendo un curso de JS para principiantes y la primera lección fue sobre cómo hacer un juego de "piedra, papel o tijera".

El instructor dijo algo acerca de que esta no era la forma más eficiente de determinar el ganador, pero en realidad no se refirió a cómo escribirlo. Todo lo que puedo pensar es usar la declaración Switch en lugar de if.

¿Alguien puede mostrarme cómo se debe hacer?

 function getResult(){ if (computerChoice === userChoice) { result = "It's a draw"; } else if (computerChoice == "rock" && userChoice == "scissors") { result = 'You lost'; } else if (computerChoice == "rock" && userChoice == "paper") { result = 'You won!'; } else if (computerChoice == "paper" && userChoice == "scissors") { result = 'You won'; } else if (computerChoice == "paper" && userChoice == "rock") { result = 'You lost'; } else if (computerChoice == "scissors" && userChoice == "rock") { result = 'You won'; } else if (computerChoice == "scissors" && userChoice == "paper") { result = 'You lost'; } resultDisplay.innerHTML=result; }

Gracias, Amin

about 4 years ago · Santiago Gelvez
3 Respostas
Responde à pergunta

0

Si asocia un número con cada opción posible, luego puede restarlos entre sí. Si no hay empate, solo quedan 2 opciones posibles (después del módulo), lo que le permite determinar de manera concisa quién ganó.

 const choices = ['rock', 'paper', 'scissors']; for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { console.log(getResult(choices[i], choices[j])); } } function getResult(computerChoice, userChoice){ const desc = `Comp: ${computerChoice}, you: ${userChoice}: `; if (computerChoice === userChoice) { return desc + "It's a draw"; } const diff = (3 + choices.indexOf(computerChoice) - choices.indexOf(userChoice)) % 3; return desc + (diff === 2 ? 'You won' : 'You lost'); }

about 4 years ago · Santiago Gelvez Relatório

0

Puedes crear un objeto que defina si tu movimiento es débil o fuerte contra otro.

Ver el siguiente código:

 function getResult() { const weapons = { rock: { weakTo: 'paper', strongTo: 'scissors' }, paper: { weakTo: 'scissors', strongTo: 'rock' }, scissors: { weakTo: 'rock', strongTo: 'paper' } } if (weapons[userChoice].strongTo === computerChoice) { result = "You Won"; } else if (weapons[userChoice].weakTo === computerChoice) { result = "You lost"; } else { result = "It's a draw"; } resultDisplay.innerHTML = result; }

about 4 years ago · Santiago Gelvez Relatório

0

Al resolver un problema como este, es bueno pensar primero en su modelo de datos. ¿Cómo crearía una estructura de datos que facilitara la respuesta a la pregunta que necesita responder?

Tal vez algo como:

 const winsVs = { rock: 'scissors', paper: 'rock', scissors: 'paper' }

Ahora winsVs.rock === 'scissors' lo que significa que la roca gana contra las tijeras.

Ahora tiene una condición si con solo los tres casos: empate, gane y pierda.

 const winsVs = { rock: 'scissors', paper: 'rock', scissors: 'paper' } function getResult(computerChoice, userChoice) { let result if (computerChoice === userChoice) { result = "It's a draw" } else if (winsVs[computerChoice] === userChoice) { result = "You lost" } else if (winsVs[userChoice] === computerChoice) { // could also be just `else {` since only one option is left. result = "You won" } return result } console.log(getResult('paper', 'paper')) // It's a draw console.log(getResult('rock', 'paper')) // You won console.log(getResult('paper', 'rock')) // You lost

about 4 years ago · Santiago Gelvez 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