本文实例讲述了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程序设计有所帮助。
