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 相关文章推荐
javascript函数库-集合框架
Apr 27 Javascript
javascript实现unicode和字符的互相转换
Jul 18 Javascript
javascript一元操作符(递增、递减)使用示例
Aug 07 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
Apr 01 Javascript
jQuery弹出层插件popShow用法示例
Jan 23 Javascript
Bootstrap多级菜单的实现代码
May 23 Javascript
完美实现js拖拽效果 return false用法详解
Jul 28 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
May 04 Javascript
微信小程序实现卡片层叠滑动效果
Jun 21 Javascript
Angular8 Http拦截器简单使用教程
Aug 20 Javascript
jQuery 隐藏/显示效果函数用法实例分析
May 20 jQuery
vantUI 获得piker选中值的自定义ID操作
Nov 04 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访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
关于Python面向对象编程的知识点总结
2017/02/14 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
python使用pygame框架实现推箱子游戏
2018/11/20 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
彻底搞懂python 迭代器和生成器
2020/09/07 Python
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
电话销售经理岗位职责
2013/12/07 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
学习十八大宣传标语
2014/10/09 职场文书
2014年变电站工作总结
2014/12/19 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
单身证明范本
2015/06/15 职场文书
新学期开学寄语2016
2015/12/04 职场文书