Segue minha solução.
Fiz sem olhar a solução dos exercícios anteriores dos instrutores. O que acharam.
// Consegue o nome do amigo
let listaAmigoIncluidos = document.getElementById('lista-amigos');
let listalistaSorteados = document.getElementById('lista-sorteio');
let vetorAmigos = [];
let sorteadosEsquerda = [];
let sorteadosDireita = [];
let pos;
// Adicionar pessoas
function adicionar() {
let nomeAmigoInput = document.getElementById('nome-amigo').value;
if (nomeAmigoInput != ''){
vetorAmigos.push(` ${nomeAmigoInput}`);
listaAmigoIncluidos.innerHTML = (vetorAmigos);
} else{
alert('Digite o nome do amigo!');
}
}
function sortear() {
let tamanhoVetor = vetorAmigos.length;
sortearVetores(tamanhoVetor);
for (let i = 0; i < sorteadosEsquerda.length; i++) {
listalistaSorteados.innerHTML += `<p id="lista-sorteio">${sorteadosEsquerda[i]} -> ${sorteadosDireita[i]}</p>`;
}
}
function sortearVetores(tamanhoVetor) {
let pos2 = 0; // posição referencia 2
while (sorteadosDireita.length < tamanhoVetor ){
// Encontra vetor da esquerda
if (sorteadosEsquerda.length < vetorAmigos.length){
pos= gerarNumeroAleatorio(0,tamanhoVetor);
//vetorEsquerda
if (sorteadosEsquerda.includes(vetorAmigos[pos]) == false){
sorteadosEsquerda.push(`${vetorAmigos[pos]}`);
}
}
// formou vetor da esquerda primeiro
if (sorteadosEsquerda.length == vetorAmigos.length){
if ((sorteadosDireita.includes(vetorAmigos[pos]) == false) && (sorteadosEsquerda[pos2] !== vetorAmigos[pos])){
sorteadosDireita.push(`${vetorAmigos[pos]}`);
pos2++;
}
}
pos= gerarNumeroAleatorio(0,tamanhoVetor);
}
}
function gerarNumeroAleatorio(min, max) {
return Math.floor(Math.random() * (max - min )) + min;
}
function reiniciar() {
vetorAmigos= [];
sorteadosEsquerda = [];
sorteadosDireita = [];
document.getElementById('lista-amigos').textContent = "";
document.getElementById('nome-amigo').value = "";
listalistaSorteados.innerHTML = `<p id="lista-sorteio"></p>`;
}