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 函数参数限制说明
Nov 19 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
May 08 Javascript
使用js操作cookie的一点小收获分享
Sep 03 Javascript
js浮点数精确计算(加、减、乘、除)
Dec 26 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
Sep 21 Javascript
javascript 面向对象封装与继承
Nov 27 Javascript
JavaScript基础知识学习笔记
Dec 02 Javascript
JS实现网站菜单拖拽移位效果的方法
Sep 24 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
Dec 14 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
Jul 01 Javascript
jQuery 判断是否包含在数组中Array[]的方法
Aug 03 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
Feb 22 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
JavaScript 事件参考手册
2008/12/24 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
Three.js学习之网格
2016/08/10 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
手机端转换rem适应
2017/04/01 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
Python实现注册、登录小程序功能
2018/09/21 Python
Python tkinter label 更新方法
2018/10/11 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
详解python程序中的多任务
2020/09/16 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
C#笔试题和英文面试题
2013/02/07 面试题
会计自荐书
2013/12/02 职场文书
工程师岗位职责规定
2014/02/26 职场文书
献爱心倡议书
2014/04/14 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
金砖之国观后感
2015/06/11 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书