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 相关文章推荐
jQuery setTimeout()函数使用方法
Apr 07 Javascript
node.js中的favicon.ico请求问题处理
Dec 15 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
Aug 03 Javascript
bootstrap多种样式进度条展示
Dec 20 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
Jan 13 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
Feb 06 Javascript
深入浅析ES6 Class 中的 super 关键字
Oct 20 Javascript
jquery实现左右轮播切换效果
Jan 01 jQuery
vue中axios解决跨域问题和拦截器的使用方法
Mar 07 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
Jun 04 Javascript
ant design pro中可控的筛选和排序实例
Nov 17 Javascript
vue-element-admin项目导入和导出的实现
May 21 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
粗略计算在线时间,bug:ip相同
2006/12/09 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
javascript getElementsByClassName函数
2010/04/01 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
2017/08/23 Javascript
vue中的scope使用详解
2017/10/29 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
详解vue路由
2020/08/05 Javascript
微信小程序实现聊天室
2020/08/21 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
基于anaconda下强大的conda命令介绍
2018/06/11 Python
python微信撤回监测代码
2019/04/29 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
网站客服岗位职责
2014/04/05 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
2014年五一劳动节社区活动总结
2014/04/14 职场文书
一年级学生评语
2014/04/23 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
庆六一宣传标语
2014/10/08 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
2014年变电站工作总结
2014/12/19 职场文书
清明扫墓感想
2015/08/11 职场文书
分析并发编程之LongAdder原理
2021/06/29 Java/Android