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 相关文章推荐
firefox火狐浏览器与与ie兼容的2个问题总结
Jul 20 Javascript
js字符串转换成xml对象并使用技巧解读
Apr 18 Javascript
node.js中的fs.fsyncSync方法使用说明
Dec 15 Javascript
js实现用户注册协议倒计时的方法
Jan 21 Javascript
判断js的Array和Object的实现方法
Aug 29 Javascript
localStorage的黑科技-js和css缓存机制
Feb 06 Javascript
关于vue.js过渡css类名的理解(推荐)
Apr 10 Javascript
js+html获取系统当前时间
Nov 10 Javascript
详解Javascript 中的 class、构造函数、工厂函数
Dec 20 Javascript
浅谈React深度编程之受控组件与非受控组件
Dec 26 Javascript
Vue仿今日头条实例详解
Feb 06 Javascript
JS前端使用canvas实现物体的点选示例
Aug 05 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 switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
jquery+css3实现会动的小圆圈效果
2016/01/27 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
轮播图组件js代码
2016/08/08 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
vue resource发送请求的几种方式
2019/09/30 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
浅析python中的分片与截断序列
2016/08/09 Python
Python操作MongoDB详解及实例
2017/05/18 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
Hibernate持久层技术
2013/12/16 面试题
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
数学教师求职信范文
2015/03/20 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
优秀员工演讲稿
2019/06/21 职场文书
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android