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 相关文章推荐
对字符串进行HTML编码和解码的JavaScript函数
Feb 01 Javascript
异步动态加载js与css文件的js代码
Sep 15 Javascript
JavaScript获得指定对象大小的方法
Jul 01 Javascript
关于javascript中dataset的问题小结
Nov 16 Javascript
jquery 遍历数组 each 方法详解
May 25 Javascript
浅谈jQuery双事件多重加载的问题
Oct 05 Javascript
angularjs实现的前端分页控件示例
Feb 10 Javascript
开发用到的js封装方法(20种)
Oct 12 Javascript
原生JS实现逼真的图片3D旋转效果详解
Feb 16 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
Feb 28 Javascript
js cavans实现静态滚动弹幕
May 21 Javascript
基于vue--key值的特殊用处详解
Jul 31 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 error_log 函数的使用
2009/04/13 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
python fabric实现远程操作和部署示例
2014/03/25 Python
分享15个最受欢迎的Python开源框架
2014/07/13 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
儿童python练习实例
2018/05/27 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
学生发电厂实习自我鉴定
2013/09/22 职场文书
大专自我鉴定范文
2013/10/23 职场文书
酒店副总岗位职责
2013/12/24 职场文书
亲子运动会的活动方案
2014/08/17 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
Python借助with语句实现代码段只执行有限次
2022/03/23 Python
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技