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 面向对象全新理练之原型继承
Dec 03 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
Jan 23 Javascript
JavaScript包装对象使用介绍
Aug 29 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
Sep 27 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 Javascript
JavaScript获取页面中超链接数量的方法
Nov 09 Javascript
JavaScript的removeChild()函数用法详解
Dec 27 Javascript
EasyUI学习之Combobox级联下拉列表(2)
Dec 29 Javascript
对于input 框限定输入值为浮点型的js代码
Sep 25 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
Jan 03 Javascript
vue.js实现带日期星期的数字时钟功能示例
Aug 28 Javascript
vue组件从开发到发布的实现步骤
Nov 11 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合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
js实时监听文本框状态的方法
2011/04/26 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
jQuery弹出层插件popShow用法示例
2017/01/23 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
一些常用的Python爬虫技巧汇总
2016/09/28 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
python实现简单遗传算法
2018/03/19 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
Python根据字符串调用函数过程解析
2020/11/05 Python
如何利用Python写个坦克大战
2020/11/18 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
房屋租赁意向书范本
2015/05/09 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
中学政教处工作总结
2015/08/13 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
浅谈node.js中间件有哪些类型
2021/04/29 Javascript
2021年最新用于图像处理的Python库总结
2021/06/15 Python
PyTorch中permute的使用方法
2022/04/26 Python
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android