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 相关文章推荐
改写一个简单的菜单 弹性大小
Dec 02 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
Oct 31 Javascript
JS脚本defer的作用示例介绍
Jan 02 Javascript
jQuery实现仿Google首页拖动效果的方法
May 04 Javascript
JavaScript制作淘宝星级评分效果的思路
Jun 23 Javascript
js实现符合国情的日期插件详解
Jan 19 Javascript
WdatePicker.js时间日期插件的使用方法
Jul 26 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
Mar 04 Javascript
通过jQuery学习js类型判断的技巧
May 27 jQuery
vuex state中的数组变化监听实例
Nov 06 Javascript
JavaScript使用canvas绘制随机验证码
Feb 17 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
Aug 06 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.ini中文版(1)
2006/10/09 PHP
一个php作的文本留言本的例子(一)
2006/10/09 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
php 输出双引号"与单引号'的方法
2010/05/09 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
Python实现抓取网页并且解析的实例
2014/09/20 Python
python实现二分查找算法
2017/09/21 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
python查看数据类型的方法
2019/10/12 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
原装进口全世界:天猫国际
2016/08/03 全球购物
大学生毕业自我评价范文分享
2013/11/11 职场文书
人力资源管理专业学生自我评价
2013/11/20 职场文书
化工专业个人的求职信范文
2013/11/28 职场文书
上班迟到检讨书
2014/01/10 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
董事长开业致辞
2015/07/29 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫