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 的addEventListener()及attachEvent()区别分析
May 21 Javascript
纯JS实现的批量图片预览加载功能
Aug 14 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
Jan 09 Javascript
ExtJS判断IE浏览器类型的方法
Feb 10 Javascript
使用原生js写的一个简单slider
Apr 29 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
全屏js头像上传插件源码高清版
Mar 29 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
Oct 12 Javascript
js实现数组去重方法及效率?Ρ? target=
Feb 14 Javascript
解析Vue2 dist 目录下各个文件的区别
Nov 22 Javascript
Vue 技巧之控制父类的 slot
Feb 24 Javascript
基于vue 动态菜单 刷新空白问题的解决
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中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
PHP实现微信提现功能
2018/09/30 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
Python如何读写CSV文件
2020/08/13 Python
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
电子商务应届生求职信
2013/11/16 职场文书
大家访活动实施方案
2014/03/10 职场文书
对教师的评语
2014/04/28 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
如何写好竞聘报告
2019/04/03 职场文书
SQL Server实现分页方法介绍
2022/03/16 SQL Server
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python