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 相关文章推荐
XML的代替者----JSON
Jul 21 Javascript
javascript下数值型比较难点说明
Jun 07 Javascript
jquery封装的对话框简单实现
Jul 21 Javascript
javascript 中__proto__和prototype详解
Nov 25 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
Mar 16 Javascript
基于jquery实现智能提示控件intellSeach.js
Mar 17 Javascript
完美解决JS文件页面加载时的阻塞问题
Dec 18 Javascript
原生js实现简单的链式操作
Jul 04 Javascript
利用node实现一个批量重命名文件的函数
Dec 21 Javascript
示例vue 的keep-alive缓存功能的实现
Dec 13 Javascript
详解Vue 单文件组件的三种写法
Feb 19 Javascript
基于JS实现操作成功之后自动跳转页面
Sep 25 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
第二节 对象模型 [2]
2006/10/09 PHP
PHP生成带有雪花背景的验证码
2006/10/09 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
js 多浏览器分别判断代码
2010/04/01 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
jquery异步请求实例代码
2011/06/21 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
对比分析json及XML
2014/11/28 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
Django小白教程之Django用户注册与登录
2016/04/22 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
小学语文教学反思
2014/02/10 职场文书
党员剖析材料范文
2014/09/30 职场文书
户外活动总结
2015/02/04 职场文书
教师年度个人总结
2015/02/11 职场文书
材料员岗位职责范本
2015/04/11 职场文书
转正申请报告格式
2015/05/15 职场文书
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL
基于tensorflow权重文件的解读
2021/05/26 Python
Python如何将list中的string转换为int
2022/07/15 Ruby