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实现的网页竖向菜单效果代码
Aug 26 Javascript
聊一聊JS中this的指向问题
Jun 17 Javascript
对Angular.js Controller如何进行单元测试
Oct 25 Javascript
jsonp跨域请求实现示例
Mar 13 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
Sep 07 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
Oct 26 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
Dec 06 jQuery
原生js实现的金山打字小游戏(实例代码详解)
Mar 16 Javascript
微信小程序实现选项卡滑动切换
Oct 22 Javascript
vue移动端下拉刷新和上滑加载
Oct 27 Javascript
JavaScript语法约定和程序调试原理解析
Nov 03 Javascript
如何使用gpu.js改善JavaScript的性能
Dec 01 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 strtok()函数的优点分析
2010/03/02 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
php接口隔离原则实例分析
2019/11/11 PHP
许愿墙中用到的函数
2006/10/07 Javascript
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
python代码检查工具pylint 让你的python更规范
2012/09/05 Python
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
会计学应届毕业生推荐信
2013/11/04 职场文书
爱耳日活动总结
2014/04/30 职场文书
2014企业年终工作总结
2014/12/23 职场文书
孔庙导游词
2015/02/04 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
nginx容器方式反向代理实战
2022/04/18 Servers