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与google map api结合使用 控件,监听器
Mar 04 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
js的for in循环和java里foreach循环的区别分析
Jan 28 Javascript
Python脚本后台运行的几种方式
Mar 09 Javascript
跟我学习javascript的隐式强制转换
Nov 16 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
May 17 Javascript
简单谈谈ES6的六个小特性
Nov 18 Javascript
Angular如何引入第三方库的方法详解
Jul 13 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
Aug 14 Javascript
前端MVVM框架解析之双向绑定
Jan 24 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
Mar 29 Javascript
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
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 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
php检测useragent版本示例
2014/03/24 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
js 页面输出值
2008/11/30 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
node.js中的fs.utimes方法使用说明
2014/12/15 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
全面了解js中的script标签
2016/07/04 Javascript
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
JS实现复制功能
2017/03/01 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
详解JS预解析原理
2020/06/16 Javascript
python中的格式化输出用法总结
2016/07/28 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
python动态视频下载器的实现方法
2019/09/16 Python
MYPROTEIN澳大利亚官方网站:欧洲运动营养品牌
2019/06/26 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
医院门卫岗位职责
2013/12/30 职场文书
有创意的广告词
2014/03/18 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
解决mysql的int型主键自增问题
2021/07/15 MySQL
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技