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 用6N±1法求素数 实例教程
Oct 20 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
Feb 16 Javascript
JavaScript中对象property的读取和写入方法介绍
Dec 30 Javascript
JavaScript分秒倒计时器实现方法
Feb 02 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
Mar 04 Javascript
深入浅出理解javaScript原型链
May 09 Javascript
Javascript中关于Array.filter()的妙用详解
Dec 04 Javascript
JQuery EasyUI的一些常用组件
Jul 12 jQuery
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
Windows上node.js的多版本管理工具用法实例分析
Nov 06 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
Apr 16 Javascript
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
使用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
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
PHP中的插件机制原理和实例
2014/07/08 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
python GUI模拟实现计算器
2020/06/22 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
美国羊皮公司:Overland
2018/01/15 全球购物
环境科学专业个人求职的自我评价
2013/11/28 职场文书
违纪检讨书2000字
2014/02/08 职场文书
禁止高声喧哗的标语
2014/06/11 职场文书
中国梦读书活动总结
2014/07/10 职场文书
走进敬老院活动总结
2014/07/10 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
单位租房协议范本
2014/12/03 职场文书
员工加薪申请报告
2015/05/15 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server
python实现进度条的多种实现
2021/04/29 Python
MySQL Server 层四个日志
2022/03/31 MySQL