简单记录--JS实现随机洗牌(数组)

本文介绍了如何使用JavaScript实现数组的随机洗牌功能。通过遍历数组并交换每个元素与随机选择的元素的位置,达到打乱数组元素顺序的效果。文中包含实现该功能的关键代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随机洗牌:将一组有序的或者无序的数组元素打乱输出。
思路:遍历原来数组的每一项让它跟选择到的随机的数组元素进行位置互换,达到了打乱的效果。
代码:

// 生成随意的值得到随机元素
function getRandomIndex(min, max) {
  // [0,1) * max-min+min ==> [0,max-min+min) => [0,max+1) => [0,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 = getRandomIndex(0, i); // 这里使用index的原因是因为希望不要将未遍历到的元素交换到前面去,尽可能的减少每个元素的交换次数,达到更随机的目的。(其实直接写arr.length也是一个效果)
    let temp = _arr[i];  // 这三行代码应该很熟悉,就是交换元素
    _arr[i] = _arr[j];
    _arr[j] = temp;
  });
  return _arr
}
console.log(shuffle([1, 2, 3, 4, 5, 6, 7]))

总结:最主要的就是生成区间内的随机数然后进行元素的交换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值