0
這是一個沮喪和骯髒的香草javascript問題。我使用的是經典陣列隨機播放功能:隨機數組函數產生相同的結果
function shuffle(array) {
var currentIndex = array.length, temporaryValue, randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
,然後反覆調用它的另一個功能:
function generateQuartile (array) {
var shuffle1 = shuffle(array);
var shuffle2 = shuffle(array);
var shuffle3 = shuffle(array);
//all three shuffles are the same
}
的問題是,所有這三個變量都得到相同的結果。該陣列洗牌一次,然後不再。我似乎無法確定這是什麼。我猜這是某種範圍/提升問題,但我真的無法弄清楚。謝謝你的幫助!
是完全的工作 - 但我還是不明白我是如何返回相同的陣列... while循環每次調用都會運行,隨機發生,爲什麼數組不會更新:/ –
@LukeSchunk - 它正在更新數組的_elements_,但數組本身仍然是同一個對象,所以當您每次更改它時調用,所有引用看到相同的對象更改.. –
,因爲數組是JavaScript中的引用?所以它不會改變任何東西? –