JS中属性值为n的循环对象
Loop object which has property value of n in JS
这是member
对象:
function member() {
this.name = name;
this.isTaken = false;
}
这是一个数组对象:
function group() {
this.members = [new member(blahhh)];
}
现在,我想创建一个组对象的原型,它将迭代并根据索引生成一个随机数,该索引在数组内的isTaken
属性中具有true的值。如果选择了一个对象,则其isTaken
属性将更改为true。
我认为您想要编写一个函数,将isTaken
设置为true
在this.members
中的member
对象之一上,随机选择对象。如果是这样:
group.prototype.setTakenAtRandom = function() {
var member = this.members[Math.floor(Math.random() * this.members.length)];
member.isTaken = true;
};
没有试图避免已经将isTaken
设置为true
的成员。如果你想这样做,一种方法是先过滤掉以前的:
group.prototype.setTakenAtRandom = function() {
var available = this.members.filter(function(m) { return !m.isTaken; });
if (available.length) {
var member = available[Math.floor(Math.random() * available.length)];
member.isTaken = true;
}
};
Math.floor(Math.random() * x)
将给你一个0 <= n < x
的值(也就是说,它可能是0
,但它不会是x
),所以这就是我们如何从数组中随机选择一个条目。
从你对这个问题的评论来看:
然后重复迭代,直到对象的所有isTaken属性都为真。
好的,然后我们想让setTakenAtRandom
告诉我们是否没有成员:
group.prototype.setTakenAtRandom = function() {
var available = this.members.filter(function(m) { return !m.isTaken; });
if (available.length) {
var member = available[Math.floor(Math.random() * available.length)];
member.isTaken = true;
return true;
}
return false;
};
然后,重复调用setTakenAtRandom
,直到返回false
。
相关文章:
- 循环对象时更新页面上的DIV元素
- 如何在循环对象时有条件地使用数据
- Javascript循环对象
- 如何循环对象中的javascript对象并查找属性
- JSON.parse在循环对象上未出错
- TypeError:分析隐藏值时,javascript中的循环对象值
- 以随机顺序定位和循环对象
- 循环对象文本数组并匹配客户
- for/in 循环对象到数组
- Javascript 不等待 For 循环.对象值不变
- 循环对象的顺序只能在迭代期间中断
- 循环对象以获取索引值
- Javascript 循环 + 对象问题:如何使用循环获取对象中的必需项
- 使用 requestAnimationFrame 的 JS 游戏循环 - 对象函数只调用一次
- 循环对象上的垃圾回收
- Javascript循环对象时打印页面
- 循环对象数组,直到lat/lng不为零
- javascript中循环对象的问题
- 循环对象数组
- 使用字符串数组循环对象