以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
8. 手写shuffle()随机打乱一个数组

可以使用 Fisher-Yates 洗牌算法来实现 shuffle() 。

Fisher-Yates 算法每次随机选择一个元素,将其与数组的最后一个元素交换位置,然后再将倒数第二个元素随机选出一个与之交换位置,以此类推,直到数组被打乱。这种算法可以保证每个元素随机出现在任何位置的概率都是相等的。

具体实现如下:

function shuffle(array) {
  for (let i = array.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
  return array;
}

以上代码遍历数组,在每一次循环中,生成一个随机数 j,然后将第 i 个元素与第 j 个元素交换位置。最终返回打乱后的数组。