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二级地域选择的实现方法
Jun 17 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
Jul 17 Javascript
javascript数组去重方法汇总
Apr 23 Javascript
jquery实现图片预加载
Dec 25 Javascript
js验证手机号、密码、短信验证码代码工具类
Jun 24 Javascript
jQuery插件zTree实现删除树节点的方法示例
Mar 08 Javascript
详解Vue双向数据绑定原理解析
Sep 11 Javascript
vue2手机APP项目添加开屏广告或者闪屏广告
Nov 28 Javascript
微信小程序模拟cookie的实现
Jun 20 Javascript
JavaScript一元正号运算符示例代码
Jun 30 Javascript
基于JavaScript实现表格隔行换色
May 08 Javascript
解决vue-router 嵌套路由没反应的问题
Sep 22 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
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
PHP 图片文件上传实现代码
2010/12/29 PHP
php实现httpclient类示例
2014/04/08 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
2015/06/11 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
2019/12/12 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
python使用thrift教程的方法示例
2019/03/21 Python
Python3中列表list合并的四种方法
2019/04/19 Python
详解Python字符串切片
2019/05/20 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
Django缓存Cache使用详解
2020/11/30 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
货代行业个人求职简历的自我评价
2013/10/22 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
商业门面租房协议书
2014/11/25 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技