如何在 JavaScript 中随机打乱数组?


Shuffle(洗牌)意味着您正在重新排列数组元素或将其混合以产生随机顺序。

_.shuffle() 属于 underscore.js,这是一个提供通用功能的 JavaScript 库。它用于以随机方式排列数组元素列表,它使用 Fisher-Yates 洗牌算法。

因此,每次执行代码时,这都会根据 Fisher-Yates 洗牌算法以不同的顺序输出结果。以下是 _.shuffle() 函数的示例:

_.shuffle(list)

参数 - 此函数接受单个参数列表。该参数用于保存将在洗牌时使用的项目列表。

返回值 - 返回值是一个全新的随机数组,其中包含原始数组中所有可用的元素,如传递到 _.shuffle() 函数一样。

示例 1:将数字数组传递给 _.shuffle() 函数

_.shuffle() 函数一次从原始数组中获取一个列表。并根据 Fisher-Yates 洗牌算法执行指定的运算。

<!DOCTYPE html>
<html>
<head>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
</head>
<body>
   <script type="text/javascript">
      document.write(_.shuffle([1, 2, 3, 4, 5, 6]));
   </script>
</body>
</html>

在以上输出中,每次刷新页面时,它都会根据页面重新加载给出不同的输出。以上 Javascript 代码在重新加载页面后随机重新排列输出。

示例 2:将结构传递给 _.shuffle() 函数

将结构传递给 _.shuffle() 函数。首先,我们创建了一个名为 details 的数组并将该数组传递到 _.shuffle() 函数中。“details”数组的元素将被打乱。

<!DOCTYPE html>
<html>
<head>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
</head>
<body>
   <script type="text/javascript">
      var details = [{
            "category": "Tutorials",
            "title": "Point",
            "id": "1"
         },
         {
            "category": "easy",
            "title": "to",
            "id": "2"
         },
         {
            "category": "learn",
            "title": "here",
            "id": "3"
         },
      ];
      document.write(JSON.stringify(_.shuffle(details)));
   </script>
</body>
</html>

示例 3:将数组传递给 _.shuffle() 函数

声明一个具有属性“num”的数组“users”,然后将其传递到 _.shuffle() 函数中,并使用参数 users 和 id。

<!DOCTYPE html>
<html>
<head>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
</head>
<body>
   <script type="text/javascript">
      var users = [
         { "num": "1" },
         { "num": "2" },
         { "num": "3" }
      ];
      document.write(JSON.stringify(_.shuffle(users, 'id')));
   </script>
</body>
</html>

示例 4:使用 sort() 和 Math.random()

以下示例演示了在 JavaScript 中使用 sort() Math.random() 方法。

<!DOCTYPE html>
<html lang="en">
<head>
   <title>Shuffle an array in a random manner</title>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
   <div id="shuffle"></div>
</head>
<body>
   <script>
      let arr = new Array("Alice", 40, "Edward", 39, "cullen");
      arr = arr.sort(() => Math.random() - 1 / 2);
      document.getElementById("shuffle").innerHTML = "Shuffle an array in a random manner : " + arr;
   </script>
</body>
</html>

更新于: 2022-12-06

365 次浏览

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告