洗牌函数[打乱数组的顺序] slice()的新运用 [原来arr.slice(start, end) 的start不是必需的]

Posted ladybug7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洗牌函数[打乱数组的顺序] slice()的新运用 [原来arr.slice(start, end) 的start不是必需的]相关的知识,希望对你有一定的参考价值。

function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1) + min)
}

function shuffle(arr) {
  let _arr = arr.slice() // 创建一个源数组的副本
  for (let i = 0; i < _arr.length; i++) {
    let j = getRandomInt(0, i)
    let t = _arr[i]
    _arr[i] = _arr[j]
    _arr[j] = t
  }
  return _arr
}
shuffle([‘a‘,‘c‘,‘m‘,‘n‘,‘1‘])  // ["m", "c", "a", "n", "1"]

 技术图片

 

以上是关于洗牌函数[打乱数组的顺序] slice()的新运用 [原来arr.slice(start, end) 的start不是必需的]的主要内容,如果未能解决你的问题,请参考以下文章

随机打乱数组顺序之随机洗牌算法

如何在保持两个字段原始顺序的情况下打乱行?

Javascript 洗牌算法,打乱数组,随机获取元素

LeetCode 384 打乱数组[洗牌] HERODING的LeetCode之路

洗牌算法

洗牌算法