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 相关文章推荐
取键盘键位ASCII码的网页
Jul 30 Javascript
jQuery 可以拖动的div实现代码 脚本之家修正版
Jun 26 Javascript
工作中常用到的JS表单验证代码(包括例子)
Nov 11 Javascript
鼠标经过显示二级菜单js特效
Aug 13 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
Oct 20 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
Sep 01 Javascript
javascript设置页面背景色及背景图片的方法
Dec 29 Javascript
JS检测移动端横竖屏的代码
May 30 Javascript
jquery精度计算代码 jquery指定精确小数位
Feb 06 Javascript
javascript实现简易数码时钟
Mar 30 Javascript
Vue 3.0 全家桶抢先体验
Apr 28 Javascript
Element Input输入框的使用方法
Jul 26 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强制运行广告的方法
2014/12/01 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
Angular移动端页面input无法输入的解决方法
2017/11/14 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
python中lambda与def用法对比实例分析
2015/04/30 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
简单了解python PEP的一些知识
2019/07/13 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
python上下文管理的使用场景实例讲解
2021/03/03 Python
学习经验交流会主持词
2014/04/01 职场文书
班级寄语大全
2014/04/10 职场文书
php双向队列实例讲解
2021/11/17 PHP
python中的3种定义类方法
2021/11/27 Python
Python中的 Set 与 dict
2022/03/13 Python
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android