JavaScript中将一个数组打乱顺序

       控制台log输出为何频频失踪?
  wxss代码为何频频失效?
  wxml布局为何乱作一团?
  究竟是道德的沦丧?还是人性的缺失?
  让我们一起来 走 跑进科学


前言

JavaScript 中可以通过多种方式将一个数组打乱顺序,下面介绍两种常见的方法。


正文

  1. 使用 sort() 方法和 Math.random() 函数

可以通过将数组的元素随机排序来打乱数组的顺序。具体做法是,使用数组的 sort() 方法和 Math.random() 函数。在 sort() 方法中传入一个比较函数,该函数返回一个随机数,表示每个元素应该放在哪个位置。

function shuffle(array) {
  array.sort(() => Math.random() - 0.5);
}

const myArray = [1, 2, 3, 4, 5];
shuffle(myArray);
console.log(myArray); // 可能输出 [2, 5, 1, 4, 3]、[4, 2, 1, 5, 3] 等

 

在上面的代码中,我们定义了一个名为 shuffle() 的函数,该函数接受一个数组作为参数,然后使用 sort() 方法和 Math.random() 函数来打乱数组的顺序。然后我们调用该函数,并输出打乱后的数组。

  1. 使用 Fisher–Yates 算法

Fisher–Yates 算法(也称为 Knuth shuffle)是一种用于打乱数组顺序的常见算法。该算法的基本思想是从数组的末尾开始,随机选取一个元素并交换位置,然后再从数组的前面选取一个元素并交换位置,以此类推。

以下是使用 Fisher–Yates 算法打乱数组顺序的代码示例:

function shuffle(array) {
  let currentIndex = array.length;
  let randomIndex;

  // 从数组末尾开始,逐个交换元素位置
  while (currentIndex !== 0) {
    // 随机选取一个元素
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex--;

    // 交换元素位置
    [array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]];
  }

  return array;
}

const myArray = [1, 2, 3, 4, 5];
shuffle(myArray);
console.log(myArray); // 可能输出 [3, 5, 2, 1, 4]、[2, 5, 3, 1, 4] 等

 在上面的代码中,我们定义了一个名为 shuffle() 的函数,该函数接受一个数组作为参数,并使用 Fisher–Yates 算法来打乱数组的顺序。然后我们调用该函数,并输出打乱后的数组。


 

总结

需要注意的是,以上两种方法都是随机打乱数组的顺序,并不能保证每次的结果都是不同的。同时在使用 Fisher–Yates 算法时,也需要注意数组的长度,以防止超出数组索引的范围。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值