OK so I am on task 25 of the build a library project and on trying to accomplish what it is telling me to do which is " Create a method called shuffle for the CD class. The method returns a randomly sorted array of all the songs in the songs property." To achieve this I seen using the fisher yates shuffle is the best I understand what it does and how it works I just don’t under stand one small part of it
const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
function shuffle(array) {
for (let i = array.length - 1; i > 0; i–) {
let j = Math.floor(Math.random() * (i + 1));
let temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
const result = shuffle(array);
// these three lines right here what do they do ?
let temp = array[i];
array[i] = array[j];
array[j] = temp;
if someone could go step by step with what each of the lines do that would be great I know they swap the values around I just dont see the need for “array[i] = array[j];” to be there when there is already “array[j] = temp;”.
That is a classic swap. Element [i] is swapped with element [j]. The temp variable is a temporary holding register for the value [i] so that element can be overwritten with value [j]. Then element [j] is overwritten with the temp value.