14/01/2019 Development / java script

Parece besteirinha, essa lógica, mas fez eu raciocinar e estudar um pouco.

Nao sei se é o melhor script, mas funciona bem!

    let list = this.shuffleArray(this.state.list) //embaralha o array
    let amigos = [...list];
    let count = 0;

    while(amigos.length > 0){

      let participante = this.state.list[count];
      var index = Math.floor(Math.random() * amigos.length); 
      let amigo = amigos.find((amigo, i) => {
        return i === index && amigo.name !== participante.name;
      });

      if(amigo){
        participante.amigo = amigo.name;
        amigos.splice(index, 1); //retiro o amigo da lista pra nao ser escolhido novamente
        count++;
      }
    }