как создать метод случайного воспроизведения? - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь создать свою собственную функцию перемешивания

Я новичок в программировании (1 месяц) Мне было дано упражнение по созданию простой «подобной программы» для спрайтов для отработки объектов. мы можем использовать только ECMAS5, и нам нужно создавать объекты только с синтаксисом функции и прототипа.

Playlist.prototype.shuffle = function(){
    this.shuffled = true;
    let cont = this.songs.length;
    let i = 0;
    let shuffledList = new Array(this.songs.length);
    let checkerArray = new Array();  //array que almacena todos los numeros generados aleatoriamente
    while(cont != 0){           
        for(let j = 0; j < checkerArray.length; j++){ //recorro el array para comprobar si algun numero (position) se repite
            let position = Math.floor(Math.random() * this.songs.length);
            if(checkerArray.includes(position) == false){          //si el numero generado no se encuentra aun en el array:
                shuffledList[position] = this.songs[i]; //añado a la lista shuffled en el index aleatorio, la cancion del array original en la posicion j
                cont--;
                i++;
                checkerArray.push(position); 
            }               
        }

    }
    return shuffledList;
}

мой метод попадает в бесконечный цикл, и я не могу найти, почему, я пытался изменить код в несколькихпути, но я всегда получаю один и тот же результат, у кого-нибудь есть подсказка? Я знаю, что алгоритм перемешивания уже сделан, что лучше, чем то, что я пытаюсь, но копирование и вставка их не помогут мне учиться. Я хотел бы узнать, что я делаю неправильно

...