我在这里有一个从数组中随机交换项目的函数;
const switch = function(array) {
let switchArr = array.slice();
for (let i = switchArr.length-1; i >=0; i--) {
let randomIndex = Math.floor(Math.random() * (i+1));
let itemAtIndex = switchArr[randomIndex];
switchArr[randomIndex] = shuffledArr[i];
switchArr[i] = itemAtIndex;
}
return switchArr;
};
有人可以解释这段代码如何交换数组元素:
let randomIndex = Math.floor(Math.random() * (i+1));
let itemAtIndex = switchArr[randomIndex];
switchArr[randomIndex] = shuffledArr[i];
switchArr[i] = itemAtIndex;
让我们说我们有一个阵列:
let arrTest = [1,2,3,4,5];
基本上该功能将从i = 4开始(长度为5 - 1) 并循环直到i> = 0(4,3,2,1);
现在这一部分让我感到高兴:
let randomIndex = Math.floor(Math.random() * (i+1));
MDN说,如果我们想要两个函数之间的随机函数,它必须是这样的:
Math.floor(Math.random() * (max - min)) + min;
与我在那里看到的相反。它也有点令人困惑switchArr
和
itemAtIndex
交换项目。
我真的需要在每次迭代时进行类比,以便将这一点记在我的脑海中。
任何能够理解并解释这一点的人?