随机选择对象
Randomly select objects
我的目标是根据对这个问题无关紧要的几个参数获得一个随机对象。
function CreateObject(name) = {
this.name = name
};
var bob = CreateObject("Bob");
var john = CreateObject("John");
var rob = CreateObject("Rob");
var steven = CreateObject("Steven");
我是否需要将每个对象插入到数组中,或者如果我有 100+ 个对象,是否有更好的方法?
如果这些对象已创建但从未销毁,则可以让构造函数为您维护一个数组,并将随机函数挂接到其中:
var CreateObject = (function() {
var created = [];
var CreateObject = function(name) {
this.name = name;
created.push(this);
};
CreateObject.random = function() {
return created[Math.floor(created.length * Math.random())];
}
return CreateObject;
}())
var bob = new CreateObject("Bob");
var john = new CreateObject("John");
var rob = new CreateObject("Rob");
var steven = new CreateObject("Steven");
CreateObject.random(); // CreateObject {name: "Rob"}
CreateObject.random(); // CreateObject {name: "Steven"}
CreateObject.random(); // CreateObject {name: "Rob"}
CreateObject.random(); // CreateObject {name: "John"}
// etc.
也可以扩展此技术以允许删除,但您必须以某种方式显式告诉构造函数正在删除对象。 否则,您的随机函数不仅无法正常工作,而且还会出现内存泄漏。
(请注意,存储数组的并不完全是构造函数。 它存储在构造函数有权访问的闭包中。
最常用、最简单和最高效的解决方案是将所有内容存储在数组中,然后选取一个随机索引。
相关文章:
- JQuery对动态创建的对象进行选择
- javascript对象操作:根据指定条件选择属性
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 仅使用文件对象选择单个文件
- Angular:使用选择列表选择过滤代码中的对象
- Javascript:从数组中的对象中选择属性
- 仅选择父对象
- Javascript / AngularJS对象选择基于表达式作为键
- Jquery上一个对象选择器
- JavaScript:使用用于Protractor测试的页面对象选择下拉列表项
- 在javascript对象选择器中使用变量
- 在 3D 场景中处理.js对象选择
- 使用角度设置多个对象(选择)
- 如何使用 JavaScript 变量值作为对象选择器
- 分层画布上的织物对象选择
- 使用对象选择根时,如何选择子元素
- 如何将字符串解析为javascript对象选择器
- 如何将选项对象选择为默认值
- 对象选择和调整大小的常用方法
- 阻止HTML画布对象选择