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 相关文章推荐
基于JQUERY的多级联动代码
Jan 24 Javascript
浅析Js中的单引号与双引号问题
Nov 06 Javascript
jQuery 删除或是清空某个HTML元素示例
Aug 04 Javascript
js和jquery设置disabled属性为true使按钮失效
Aug 07 Javascript
JS使用for循环遍历Table的所有单元格内容
Aug 21 Javascript
jQuery中parents()方法用法实例
Jan 07 Javascript
jQuery实现自定义右键菜单的树状菜单效果
Sep 02 Javascript
jQuery过滤选择器用法示例
Sep 12 Javascript
vue.js初学入门教程(1)
Nov 03 Javascript
JS常见构造模式实例对比分析
Aug 27 Javascript
Vue3.0中的monorepo管理模式的实现
Oct 14 Javascript
Vue.js使用axios动态获取response里的data数据操作
Sep 08 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 array 的加法操作代码
2010/07/24 PHP
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
2016/12/05 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
Python实现FLV视频拼接功能
2020/01/21 Python
Python内存映射文件读写方式
2020/04/24 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
国际鲜花速递专家:Floraqueen
2016/11/24 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
初中新生军训方案
2014/05/13 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers