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 相关文章推荐
JS的replace方法介绍
Oct 20 Javascript
你必须知道的Javascript知识点之"this指针"的应用
Apr 23 Javascript
用jquery模仿的a的title属性的例子
Oct 22 Javascript
js判断当前页面在移动设备还是在PC端中打开
Jan 06 Javascript
JavaScript实现点击单元格改变背景色的方法
Feb 12 Javascript
如何利用Promises编写更优雅的JavaScript代码
May 17 Javascript
vue-cli项目中怎么使用mock数据
Sep 27 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
Mar 14 Javascript
详解搭建es6+devServer简单开发环境
Sep 25 Javascript
说说Vuex的getters属性的具体用法
Apr 15 Javascript
vue使用websocket的方法实例分析
Jun 22 Javascript
JS字符串和数组如何实现相互转化
Jul 02 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数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
2015/02/18 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
js实现微信聊天界面
2020/08/09 Javascript
python将字符串转换成数组的方法
2015/04/29 Python
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
计算 s=(x*y)1/2,用两个宏定义来实现
2016/08/11 面试题
法律系毕业生自荐信范文
2014/03/27 职场文书
测控技术自荐信
2014/06/05 职场文书
中国梦口号
2014/06/13 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
如何撰写促销方案?
2019/07/05 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书