Is there a way to make my Rock, Paper, Scissors game more concise? I am learning JavaScript and I just wrote a Rock, Paper, Scissors game that will first prompt the two players for their choices and validate them. In the event of a tie, each player will choose their answer again and it will once again be validated. Everything works fine, but it feels like I have a lot of repetition going on here. Since I'm new to this, I can't figure out a way to make this more concise if possible.

var compare = function(choice1, choice2){
    while (choice1 != 'rock' &amp;&amp; choice1 != 'paper' &amp;&amp; choice1 != "scissors"){
        choice1 = prompt('Invalid entry. Player 1, please choose rock, paper, or scissors only');
    }    
    while (choice2 != 'rock' &amp;&amp; choice2 != 'paper' &amp;&amp; choice2 != "scissors"){
        choice2 = prompt('Invalid entry. Player 2, please choose rock, paper, or scissors only');
    }
    while (choice1 == choice2){
        choice1 = prompt('Tiebreaker!. Player 1, please choose rock, paper, or scissors only');
     while (choice1 != 'rock' &amp;&amp; choice1 != 'paper' &amp;&amp; choice1 != "scissors"){
        choice1 = prompt('Invalid Entry. Player 1, please choose rock, paper, or scissors only');
        }
        choice2 = prompt('Tiebreaker!. Player 2, please choose rock, paper, or scissors only');
     while (choice2 != 'rock' &amp;&amp; choice2 != 'paper' &amp;&amp; choice2 != "scissors"){
        choice2 = prompt('Invalid Entry. Player 2, please choose rock, paper, or scissors only');
        }

    }
    if (choice1 == 'rock'){
        if (choice2 == 'scissors'){
            return 'rock wins';
        }
        else{
            return 'paper wins';
        }
    }
    if (choice1 == 'paper'){
        if (choice2 == 'rock'){
            return 'paper wins';
        }
        else{
            return 'scissors wins';
        }
    }  
    if (choice1 == 'scissors' ){
        if (choice2 == 'rock'){
            return 'rock wins';
        }
        else{
            return 'scissors wins';
        }
    }
}
Just build an object with the associativity.

// what wins to what
var winsTo = {
  'rock': 'scissors',
  'paper': 'rock',
  'scissors': 'paper',
};

// invalid selected
if (!(choice1 in winsTo &amp;&amp; choice2 in winsTo)) {
  alert("bad choice !");
  return;
}

// same choice =&gt; equality
if (choice1 == choice2) {
  alert("Equality!");
} else if (winsTo[choice1] == choice2) {
  alert("choice1 won!");
} else {
  alert("choice2 won!");
}