JavaScript中实现PHP的打乱数组函数shuffle实例


Posted in Javascript onOctober 11, 2014

PHP 里面有个非常方便的打乱数组的函数 shuffle() ,这个功能在许多情况下都会用到,但 javascript 的数组却没有这个方法,没有不要紧,可以扩展一个,自己动手,丰衣足食嘛。

请刷新页面查看随机排序效果。

<script type="text/javascript">

//<![CDATA[

// 说明:为 Javascript 数组添加 shuffle 方法

 

var shuffle = function(v){

    for(var j, x, i = v.length; i; j = parseInt(Math.random() * i), x = v[--i], v[i] = v[j], v[j] = x);

    return v;

};

 

var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

 

document.write("A = ", a.join(","), "<br />shuffle(A) = ", shuffle(a));

 

//]]>

</script>

输出结果:

A = 0,1,2,3,4,5,6,7,8,9
shuffle(A) = 1,5,0,9,2,3,6,8,4,7

A.shuffle() = 0,4,2,8,5,1,3,6,9,7

通过prototype 给数组添加一个方法:

<script type="text/javascript">

//<![CDATA[

 

var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

 

if (!Array.prototype.shuffle) { 

    Array.prototype.shuffle = function() {

        for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);

        return this;

    };

}

 

document.write("A = ", a.join(","), "<br />A.shuffle() = ", a.shuffle());

 

//]]>

</script>
Javascript 相关文章推荐
js实现幻灯片效果(基于jquery插件)
Nov 05 Javascript
浅谈JavaScript Date日期和时间对象
Dec 29 Javascript
JavaScript设计模式学习之“类式继承”
Mar 12 Javascript
jQuery $.each遍历对象、数组用法实例
Apr 16 Javascript
javascript日期处理函数,性能优化批处理
Sep 06 Javascript
js实现不重复导入的方法
Mar 02 Javascript
原生js三级联动的简单实现代码
Jun 07 Javascript
JS作用域深度解析
Dec 29 Javascript
jQuery实现弹出窗口弹出div层的实例代码
Jan 09 Javascript
微信小程序 定位到当前城市实现实例代码
Feb 23 Javascript
node.js中EJS 模板快速入门教程
May 08 Javascript
Vue实现数字输入框中分割手机号码的示例
Oct 10 Javascript
JavaScript定义变量和变量优先级问题探讨
Oct 11 #Javascript
JavaScript中获取鼠标位置相关属性总结
Oct 11 #Javascript
JavaScript中最简洁的编码html字符串的方法
Oct 11 #Javascript
原生Javascript封装的一个AJAX函数分享
Oct 11 #Javascript
探讨js字符串数组拼接的性能问题
Oct 11 #Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
Oct 10 #Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
Oct 10 #Javascript
You might like
深入了解PHP类Class的概念
2012/06/14 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
浅谈vue 单文件探索
2018/09/05 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
token 机制和实现方式
2020/12/15 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
Python实现登录接口的示例代码
2017/07/21 Python
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
Java提供了哪些企业应用编程接口
2015/02/13 面试题
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
电气技术员岗位职责
2013/11/19 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
2015年司机工作总结
2015/04/23 职场文书
农业项目投资意向书
2015/05/09 职场文书
Python MNIST手写体识别详解与试练
2021/11/07 Python