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 相关文章推荐
VBScript版代码高亮
Jun 26 Javascript
优化javascript的执行速度
Jan 23 Javascript
JavaScript 精粹读书笔记(1,2)
Feb 07 Javascript
jquery放大镜效果超漂亮噢
Nov 15 Javascript
JS版微信6.0分享接口用法分析
Oct 13 Javascript
JavaScript的六种继承方式(推荐)
Jun 26 Javascript
浅谈Webpack自动化构建实践指南
Dec 18 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
Feb 01 Javascript
postman+json+springmvc测试批量添加实例
Mar 31 Javascript
Javasript设计模式之链式调用详解
Apr 26 Javascript
JavaScript实现瀑布流布局的3种方式
Dec 27 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 Vue.js
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.MVC的模板标签系统(一)
2006/09/05 PHP
PHP4实际应用经验篇(1)
2006/10/09 PHP
PHP修改session_id示例代码
2014/01/08 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
2017/02/24 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
jQuery Tips 为AJAX回调函数传递额外参数的方法
2010/12/28 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
Angular.js中上传指令ng-upload的基本使用教程
2017/07/30 Javascript
Vue单文件组件基础模板小结
2017/08/10 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
centos系统升级python 2.7.3
2014/07/03 Python
Django开发中的日志输出的方法
2018/07/02 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
浅谈Python中range与Numpy中arange的比较
2020/03/11 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
金融专业个人的自我评价
2013/10/18 职场文书
自动一体化专业求职信
2014/03/15 职场文书
初中班主任评语
2014/04/24 职场文书
同意报考公务员证明
2015/06/17 职场文书
终止合同协议书范本
2016/03/22 职场文书
MYSQL 运算符总结
2021/11/11 MySQL