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 限制输入和粘贴(IE,firefox测试通过)
Nov 14 Javascript
JavaScript中创建对象和继承示例解读
Feb 12 Javascript
使用jquery组件qrcode生成二维码及应用指南
Feb 22 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
Apr 07 Javascript
JavaScript判断IE版本型号
Jul 27 Javascript
详解Angualr 组件间通信
Jan 21 Javascript
jquery实现楼层滚动效果
Jan 01 jQuery
微信小程序websocket实现聊天功能
Mar 30 Javascript
React key值的作用和使用详解
Aug 23 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
May 01 Javascript
微信小程序3D轮播实现代码
Sep 19 Javascript
Vue中keep-alive组件作用详解
Feb 04 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实现的Cookies操作类实例
2014/09/24 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
Jquery attr("checked") 返回checked或undefined 获取选中失效
2013/10/10 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
Python 处理数据的实例详解
2017/08/10 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
Python列表与元组的异同详解
2019/07/02 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
django在开发中取消外键约束的实现
2020/05/20 Python
python 数据类型强制转换的总结
2021/01/25 Python
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
打架检讨书500字
2014/01/29 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
社区重阳节活动总结
2015/03/24 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书
导游词之河北邯郸
2019/09/12 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python