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拥有类似Lambda表达式编程能力的方法
Sep 12 Javascript
javascript作用域和闭包使用详解
Apr 25 Javascript
JavaScript基础语法、dom操作树及document对象
Dec 02 Javascript
浅谈JavaScript中的Math.atan()方法的使用
Jun 14 Javascript
纯JS实现本地图片预览的方法
Jul 31 Javascript
JS实现六边形3D拖拽翻转效果的方法
Sep 11 Javascript
微信小程序链接传参并跳转新页面
Nov 29 Javascript
ThinkJS中如何使用MongoDB的CURD操作
Dec 13 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
Jan 26 Javascript
Vue指令的钩子函数使用方法
Mar 20 Javascript
Angular.js组件之input mask对input输入进行格式化详解
Jul 10 Javascript
关于Stream和Buffer的相互转换详解
Jul 26 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 Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
学习php中的正则表达式
2014/08/17 PHP
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
用Python实现协同过滤的教程
2015/04/08 Python
Python 搭建Web站点之Web服务器网关接口
2016/11/06 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
Python引用计数操作示例
2018/08/23 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
什么样的创业计划书可行性高?
2014/02/01 职场文书
财务总监管理职责范文
2014/03/09 职场文书
土木工程求职信
2014/05/29 职场文书
应届大专生自荐书
2014/06/16 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
法人身份证明书
2014/10/08 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
活动总结书怎么写
2015/05/11 职场文书
JavaScript执行机制详细介绍
2021/12/06 Javascript
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android