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 相关文章推荐
javascript 操作cookies及正确使用cookies的属性
Oct 15 Javascript
location.href语句与火狐不兼容的问题
Jul 04 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
Jan 10 Javascript
百度判断手机终端并自动跳转js代码及使用实例
Jun 11 Javascript
jQuery实现简单的日期输入格式化控件
Mar 12 Javascript
利用JavaScript阻止表单提交的两种方法
Aug 11 Javascript
JavaScript中Promise的使用详解
Feb 26 Javascript
详解tween.js的使用教程
Sep 14 Javascript
原生js封装添加class,删除class的实例
Nov 06 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
May 16 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
Jun 24 Javascript
webpack优化之代码分割与公共代码提取详解
Nov 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
PHP入门
2006/10/09 PHP
php实现简单的MVC框架实例
2015/09/23 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
php图片添加水印例子
2016/07/20 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
PDO::errorCode讲解
2019/01/28 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
javascript 框架小结 个人工作经验
2009/06/13 Javascript
js DataSet数据源处理代码
2010/03/29 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
JavaScript中通过提示框跳转页面的方法
2016/02/14 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
一则python3的简单爬虫代码
2014/05/26 Python
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
在Django框架中设置语言偏好的教程
2015/07/27 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
小区消防演习方案
2014/02/21 职场文书
党员目标管理责任书
2014/07/25 职场文书
优秀班集体申报材料
2014/12/25 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
解除处分决定书
2015/06/25 职场文书
医院病假条范文
2015/08/17 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python