JavaScript数组对象实现增加一个返回随机元素的方法


Posted in Javascript onJuly 27, 2015

本文实例讲述了JavaScript数组对象实现增加一个返回随机元素的方法。分享给大家供大家参考。具体如下:

核心特性:

概率随机、顺序随机、随机冒泡

本方法 来自个人手写 JavaScript 的实践,只涉及 JavaScript 1.5(ECMAscript 3 国际标准)语言本身,在所有 JS 引擎实现中通用~

为Array对象新增random方法:

(function () {
  function Random_SN(iArray) {
    return Math.floor(Math.random() * iArray.length);
  }
  function Probability_Random(iArray) {
    var Random_Int;
    if (iArray.Random_SN === undefined)
      iArray.Random_SN = -1;
    do Random_Int = Random_SN(iArray);
    while ( Random_Int == iArray.Random_SN )
    iArray.Random_SN = Random_Int;
    return iArray[Random_Int];
  }
  function Sequence_Random(iArray) {
    return iArray.splice(Random_SN(iArray), 1)[0];
  }
  Array.prototype.random = function (Mode, Pop) {
    if (! Mode)
      return Probability_Random(this);
    if (! Pop) {
      if (! (this.Random_Queue && this.Random_Queue.length))
        this.Random_Queue = [].concat(this);
      return Sequence_Random(this.Random_Queue);
    }
    return Sequence_Random(this);
  };
})();

使用示例:

// 【概率随机】
//
// 元素的返回 完全随机,出现几率不定,有限次调用不保证能返回所有元素
var iElement = iArray.random();
// 【顺序随机】
//
// 元素的返回 有周期性,在每个周期内,元素都出现一次,但顺序不定
var iElement = iArray.random(true);
// 【随机冒泡】
//
// 每次调用都从原数组中随机取出一个元素返回(原数组 就地改变)
var iElement = iArray.random(true, true);

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 对话框和状态栏使用说明
Oct 25 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
Jquery 获取对象的几种方式介绍
Jan 17 Javascript
把jQuery的类、插件封装成seajs的模块的方法
Mar 12 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
Jun 10 Javascript
JavaScript Function函数类型介绍
Apr 08 Javascript
Grunt入门教程(自动任务运行器)
Aug 06 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
Aug 03 Javascript
vue裁切预览组件功能的实现步骤
May 04 Javascript
微信小程序自定义弹窗实现详解(可通用)
Jul 04 Javascript
JavaScript实现简单进度条效果
Mar 25 Javascript
vue 实现tab切换保持数据状态
Jul 21 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
Jul 27 #Javascript
Javascript验证Visa和MasterCard信用卡号的方法
Jul 27 #Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
Jul 27 #Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
Jul 27 #Javascript
JavaScript动态提示输入框输入字数的方法
Jul 27 #Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
Jul 27 #Javascript
JQ技术实现注册页面带有校验密码强度
Jul 27 #Javascript
You might like
PHP开发的一些注意点总结
2010/10/12 PHP
用PHP实现弹出消息提示框的两种方法
2013/12/17 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
python实现定制交互式命令行的方法
2014/07/03 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
详解python中eval函数的作用
2019/10/22 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
函授药学自我鉴定
2014/02/07 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
志愿者活动总结报告
2014/06/27 职场文书
村级个人对照检查材料
2014/08/22 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
最感人的道歉情书
2015/05/12 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
Redis Stream类型的使用详解
2021/11/11 Redis
MySQL 计算连续登录天数
2022/05/11 MySQL