如何在 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>
广告