JavaScript对数组进行随机重排的方法
JavaScript中的数组随机重排技巧
在JavaScript中,我们常常需要对数组进行随机重排。本文介绍两种实现技巧,以供参考。
让我们初始化一个包含大量元素的数组,以便更好地展示随机排序的效果。我们创建一个包含十万个元素的数组,编号从0到99999。接下来,我们介绍第一种方法。
常规方法是使用数组的sort()方法,传入一个随机比较函数,将数组打乱。这种方法的实现代码如下:
```javascript
var count = 100000; // 定义数组长度
var arr = []; // 创建空数组
for (var i = 0; i < count; i++) { // 填充数组
arr.push(i);
}
var t = new Date().getTime(); // 记录开始时间
Array.prototype.sort.call(arr, function(a, b) { // 使用sort方法并传入随机比较函数进行排序
return Math.random() > 0.5 ? -1 : 1; // 比较函数返回随机的结果,实现随机排序效果
});
console.log(arr); // 打印打乱后的数组
var t1 = new Date().getTime(); // 记录结束时间并计算耗时打印出来。这种方法虽然可行,但效率相对较低。如果数组较大,可能需要较长的时间来完成排序。接下来我们介绍一种效率更高的方法。```javascript 给数组增加一个shuffle方法,这个方法使用简单的逻辑操作实现数组的随机重排。这种方法的时间复杂度为O(n),因此效率更高。实现代码如下: ```javascript if (!Array.prototype.shuffle) { // 如果数组没有shuffle方法则增加此方法 Array.prototype.shuffle = function() { for (var j, x, i = this.length; i; j = Math.floor(Math.random() i), x = this[--i], this[i] = this[j], this[j] = x); return this; }; } var arr = new Array(count); // 创建新数组 for (var i = 0; i < count; i++) { arr[i] = i; } var t = new Date().getTime(); // 记录开始时间 arr.shuffle(); // 打乱数组 console.log(arr); // 打印打乱后的数组 var t1 = new Date().getTime(); // 记录结束时间并计算耗时打印出来。相比第一种方法,第二种方法的执行效率更高,适合处理大型数组。希望本文的介绍对大家的JavaScript编程有所帮助。更多精彩内容,请持续关注我们的更新。 ``` 通过以上两种方法,我们可以实现对JavaScript数组的随机重排。这两种方法各有优缺点,可以根据实际情况选择合适的方法进行处理。希望本文的介绍能对大家的编程工作有所帮助。
编程语言
- JavaScript对数组进行随机重排的方法
- jQuery使用ajax方法解析返回的json数据功能示例
- vue2.0 自定义日期时间过滤器
- SQL Server数据类型char、nchar、varchar、nvarchar的区别
- NodeJs搭建本地服务器之使用手机访问的实例讲解
- PHP 芝麻信用接入的注意事项
- 微信小程序获取用户信息并保存登录状态详解
- PHP实现从上往下打印二叉树的方法
- javascript简单实现类似QQ头像弹出效果的方法
- SQL Server简单查询示例汇总
- jQuery中 bind的用法简单介绍
- Vue进度条progressbar组件功能
- JavaScript对Json的增删改属性详解
- 快速插入大量数据的asp.net代码(Sqlserver)
- php获取指定(访客)IP所有信息(地址、邮政编码、
- PHP使用Apache的伪静态功能实现“网页404时跳转指