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 switch case 另类写法
Mar 14 Javascript
jquery如何通过name名称获取当前name的value值
Dec 20 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
Jan 14 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
Oct 10 Javascript
AspNet中使用JQuery boxy插件的确认框
May 20 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
Apr 17 Javascript
AngularJS equal比较对象实例详解
Sep 14 Javascript
@ResponseBody 和 @RequestBody 注解的区别
Mar 08 Javascript
微信小程序 高德地图路线规划实现过程详解
Aug 05 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 Javascript
使用Bootstrap做一个朝代历史表
Dec 10 Javascript
antd table按表格里的日期去排序操作
Nov 17 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基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
php微信开发之谷歌测距
2018/06/14 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
简述数据库的设计过程
2015/06/22 面试题
现金会计岗位职责
2013/12/05 职场文书
班组长的岗位职责
2013/12/09 职场文书
高中生的自我评价
2014/03/04 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
乳制品整治工作方案
2014/05/29 职场文书
营销团队口号
2014/06/06 职场文书
停电放假通知
2015/04/14 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL
mysql中between的边界,范围说明
2021/06/08 MySQL
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL