【发布时间】:2021-07-10 16:42:36
【问题描述】:
我正在了解“The Fisher Yates shuffle”并遇到了一个问题。我突出显示并评论“This Work”、“This doesn't Work”的代码部分是对数组进行洗牌。根据我对 Javascript 的理解,不起作用的部分应该起作用。你能解释一下为什么它不起作用吗?
const array = [..."12345678"]
let arrayShuffle = function(arr){
for(let i = array.length - 1; i > 0; i--){
let randomNum = Math.floor(Math.random() * (i + 1))
let temp;
let currentPos = arr[i]
let randomPos = arr[randomNum]
/* This Work(it shuffled) \/ */
temp = arr[i]
arr[i] = arr[randomNum]
arr[randomNum] = temp
/* This Doesnt Work(Doesn't shuffle) \/ */
// temp = currentPos
// currentPos = randomPos
// randomPos = temp
}
return arr
}
let res = arrayShuffle(array)
console.log(res)
【问题讨论】:
-
赋值给变量和赋值给数组元素是不同的。
-
@AmitVerma 嗨,很抱歉打扰您,我刚刚开始学习 javascript,我不明白您分配给变量和分配给数组元素的意思是不同的。如果可以的话,能不能详细一点?
标签: javascript