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 相关文章推荐
jquery select(列表)的操作(取值/赋值)
Aug 06 Javascript
jquery.validate分组验证代码
Mar 17 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
May 14 Javascript
Jquery图片滚动与幻灯片的实例代码
Apr 08 Javascript
什么是Node.js?Node.js详细介绍
Jun 01 Javascript
JavaScript关于提高网站性能的几点建议(一)
Jul 24 Javascript
理解 Node.js 事件驱动机制的原理
Aug 16 Javascript
JS实现的抛物线运动效果示例
Jan 30 Javascript
修改npm全局安装模式的路径方法
May 15 Javascript
vue template中slot-scope/scope的使用方法
Sep 06 Javascript
vue实现简单的日历效果
Sep 24 Javascript
浅谈node.js中间件有哪些类型
Apr 29 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实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
html读出文本文件内容
2007/01/22 Javascript
图片连续滚动代码[兼容IE/firefox]
2009/06/11 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
Exjs 入门篇
2010/04/07 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
Python正则表达式分组概念与用法详解
2017/06/24 Python
Python的多维空数组赋值方法
2018/04/13 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
python读写csv文件的方法
2019/08/13 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
室内设计专业个人的自我评价
2013/10/19 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
小学总务工作总结
2015/08/13 职场文书
初中语文教学随笔
2015/08/15 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang