0
I am trying to create an algorithm for a secret friend draw. That is, given an array I need to form unique pairs. Example: [Gandalf, Bilbo, Thorin]
a possible return would be [[Gandalf, Thorin ], [Bilbo, Gandalf], [Thorin, Bilbo]]
. I tried this way:
let amigos = ['Gandalf', 'Bilbo', 'Thorin'];
let copiaAmigos = [...amigos];
console.log(amigos.map(element => {
return [element, sorteArAmigos(element)];
}));
function sorteArAmigos(item){
while (copiaAmigos.length) {
let indexSorteado = sorteNumero(copiaAmigos);
let valorSorteado = copiaAmigos[indexSorteado];
if(valorSorteado == item){ // Acho que o erro está aqui.
continue;
}
copiaAmigos.splice(indexSorteado, 1); // remove um amigo já sorteado
return valorSorteado;
}
}
// Função que sorteia um número do array copiaAmigos
function sorteNumero(array) {
let numeroSorteado = Math.floor(Math.random() * array.length);
return numeroSorteado;
}
At some point it enters an infinite loop. Why is this loop taking place, how to fix it?