JS随机打乱数组的方法小结


Posted in Javascript onJune 22, 2016

本文实例总结了JS随机打乱数组的方法。分享给大家供大家参考,具体如下:

JS中,要打乱数组有很多方法,网上流传一个国外人写的方法,我认为是最精简的了:

function randomsort(a, b) {
    return Math.random()>.5 ? -1 : 1;
    //用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1
}
var arr = [1, 2, 3, 4, 5];
arr.sort(randomsort);

这里介绍下sort()函数,在JS中Array对象里内置了一个函数:

arrayobj.sort([sortfunction])

此方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。

sortFunction为可选项。

是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

sortFunction方法有两个参数。分别代表每次排序比较时的两个数组项。sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。

我们可以对上面的randomsort()稍作修改,来实现升序排列和降序排列:

function asc(a,b) {
return a < b ? -1 : 1;//如果a<b不交换,否则交换,即升序排列
}
function desc(a,b) {
return a > b ? -1 : 1;;//如果a>b不交换,否则交换,即将序排列
}

另外,可以直接把一个无名函数直接放到sort()方法的调用中。如下的例子是将奇数排在前面,偶数排在后面,例子如下:

以下是引用片段:

var arrA = [6,2,4,3,5,1];
arrA.sort( function(x, y) {
if (x % 2 ==0) return 1;
if (x % 2 !=0) return -1;
});
document.writeln(arrA); //输出:1,5,3,4,6,2

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
event对象的方法 兼容多浏览器
Jun 27 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
Jul 05 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
Jul 14 Javascript
javascript的动态加载、缓存、更新以及复用(一)
Jun 09 Javascript
javascript父子页面通讯实例详解
Jul 17 Javascript
AngularJs bootstrap搭载前台框架——准备工作
Sep 01 Javascript
原生JS改变透明度实现轮播效果
Mar 24 Javascript
Angular2生命周期钩子函数的详细介绍
Jul 10 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
Dec 04 Javascript
Vue的属性、方法、生命周期实例代码详解
Sep 17 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
Sep 27 Javascript
VUE实现密码验证与提示功能
Oct 18 Javascript
JS产生随机数的几个用法详解
Jun 22 #Javascript
js与applet相互调用的方法
Jun 22 #Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
Jun 22 #Javascript
JS 日期与时间戮相互转化的简单实例
Jun 22 #Javascript
静态页面html中跳转传值的JS处理技巧
Jun 22 #Javascript
浅谈JavaScript for循环 闭包
Jun 22 #Javascript
Javascript获取随机数的实现方法
Jun 22 #Javascript
You might like
用php写的serv-u的web申请账号的程序
2006/10/09 PHP
下载文件的点击数回填
2006/10/09 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
webpack打包非模块化js的方法
2018/10/24 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
javascript实现计算器功能
2020/03/30 Javascript
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
轻松理解Python 中的 descriptor
2017/09/15 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
python用for循环求和的方法总结
2019/07/08 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
python+logging+yaml实现日志分割
2019/07/22 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
三好学生自我鉴定
2013/12/17 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
质检员工作总结2015
2015/04/25 职场文书
初中同学会致辞
2015/08/01 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
php png失真的原因及解决办法
2021/11/17 PHP