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 空位补零实现代码
Feb 26 Javascript
Jquery中val()表单取值赋值的实例代码
Aug 15 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
Sep 09 Javascript
jQuery后代选择器用法实例
Dec 23 Javascript
Js+php实现异步拖拽上传文件
Jun 23 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
Feb 14 Javascript
详解jQuery中的isPlainObject()使用方法
Feb 27 jQuery
jQuery实现的回车触发按钮事件功能示例
Mar 25 jQuery
vue中的模态对话框组件实现过程
May 01 Javascript
基于jquery实现左右上下移动效果
May 02 jQuery
Node.js API详解之 V8模块用法实例分析
Jun 05 Javascript
ES6 Symbol在对象中的作用实例分析
Jun 06 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 Try Catch异常测试
2009/03/01 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
php二维数组排序详解
2013/11/06 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
php实现webservice实例
2014/11/06 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
小程序实现投票进度条
2019/11/20 Javascript
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
Python根据区号生成手机号码的方法
2015/07/08 Python
Flask框架web开发之零基础入门
2018/12/10 Python
Django实现学员管理系统
2019/02/26 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
pycharm显示远程图片的实现
2019/11/04 Python
Python Selenium参数配置方法解析
2020/01/19 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
美国钻石商店:Zales
2016/11/20 全球购物
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
大学本科毕业生的自我鉴定
2013/11/26 职场文书
劳资专员岗位职责
2013/12/27 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
公司开除员工通知
2015/04/22 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL