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 ctrl+Enter shift+Enter实现代码
Feb 07 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
Nov 11 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
Sep 29 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
Oct 09 Javascript
更高效的使用JQuery 这里总结了8个小技巧
Apr 13 Javascript
javascript css红色经典选项卡效果实现代码
May 17 Javascript
js 打开新页面在屏幕中间的实现方法
Nov 02 Javascript
微信小程序 开发之顶部导航栏实例代码
Feb 23 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
Jun 20 Javascript
get  post jsonp三种数据交互形式实例详解
Aug 25 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
May 21 Javascript
JavaScript动态添加数据到表单并提交的几种方式
Jun 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
解析MySql与Java的时间类型
2013/06/22 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
Javascript 二维数组
2009/11/26 Javascript
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
2011/03/01 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
gulp教程_从入门到项目中快速上手使用方法
2017/09/14 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
python冒泡排序简单实现方法
2015/07/09 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
Python中请不要再用re.compile了
2019/06/30 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
详解python的变量缓存机制
2021/01/24 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
汽修专业学生自我鉴定
2013/11/16 职场文书
销售工作岗位职责
2013/12/24 职场文书
初中英语教学反思
2014/01/25 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
检讨书之工作不认真
2019/08/14 职场文书
Python数据分析入门之数据读取与存储
2021/05/13 Python