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中的数学函数
Apr 04 Javascript
js获取当前月的第一天和最后一天的小例子
Nov 18 Javascript
JS获取URL中的参数数据
Dec 05 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
Jan 13 Javascript
jquery ajaxfileupload异步上传插件使用详解
Feb 08 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
Angularjs修改密码的实例代码
May 26 Javascript
深入理解Angular中的依赖注入
Jun 26 Javascript
详解angularjs popup-table 弹出框表格指令
Sep 20 Javascript
Vue.js获取被选择的option的value和text值方法
Aug 24 Javascript
浅谈Node框架接入ELK实践总结
Feb 22 Javascript
JS中如何优雅的使用async await详解
Oct 05 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 URL编码解码函数代码
2009/03/10 PHP
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
Smarty模板引擎缓存机制详解
2016/05/23 PHP
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
js简单实现交换Li的值
2014/05/22 Javascript
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
javaScript中with函数用法实例分析
2015/06/08 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
总结jQuery插件开发中的一些要点
2016/05/16 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
Vue中"This dependency was not found"问题的解决方法
2018/06/19 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
numpy自动生成数组详解
2017/12/15 Python
Python中property属性实例解析
2018/02/10 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
详解python tkinter模块安装过程
2020/01/06 Python
python在不同条件下的输入与输出
2020/02/13 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
python绘图模块之利用turtle画图
2021/02/12 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
应聘编辑职位自荐信范文
2014/01/05 职场文书
体育之星事迹材料
2014/05/11 职场文书
小组名称和口号
2014/06/09 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
学生检讨书怎么写
2014/10/09 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript