2016-07-31 67 views
2

上下文:我正在构建一个基于代理的模型房地产市场模拟。我有一个具有属性和方法,到目前为止,我已经创造了他们这样的家用物品:新对象实例,生成器,数组,名称生成

var houseHoldArray = []; 

var Household = function(name, house) { 
    this.name = name; 
    this.house = house.address; 
    this.x = house.x; 
    this.y = house.y; 
    this.isHomeOwner = true; 
    this.isSelling = false; 

}; 

Household.prototype.draw = function() { 
ellipse(this.x, this.y, 10, 10); 
}; 

Household.prototype.determinMove = function() { 
    if(random(0, 100) <= 75){ 
     this.isSelling = true; 
    } 
}; 

var household1 = new Household("Smith", house1); 
var household2 = new Household("Black", house2); 
var household3 = new Household("Johnson", house3); 
var household4 = new Household("Williams", house4); 
var household5 = new Household("Jones", house5); 

houseHoldArray.push(household1, household2, household3, household4, household5); 

household1.draw(); 
household2.draw(); 
household3.draw(); 
household4.draw(); 
household5.draw(); 

我现在要创建一个函数,触发在点击一个按钮,会自动创建一定数量的新家庭实例并将它们存储在数组中,因为稍后需要使用for循环遍历它们,并根据它们的isSelling和isHomeowner属性的状态执行某些操作。

问题:我该如何创建一个函数,点击一个按钮后,会生成一定数量的新对象实例并将它们推送到houseHoldArray

您可能会发现一个更有效的方式做到这一点,但在最后,我想有一个包含个人家庭的信息,让我跑像这样的数组:

for (var i = 0; i < houseHoldArray.length; i++) { 
    if houseHoldArray[i].isSelling { 
     //do something 
    } 
    houseHoldArray[i].determinMove() 
} 

回答

0

而不是使用“ houseHold1,houseHold2“,我们已经将它们用作数组。与房屋一样。就像这样:

<button onclick='addHouseHolds(5, ["Smith", "Black", "Johnson","Williams","Jones"], [0,1,2,3,4])'>Click me</button> 

var houseHoldArray = []; 
var houses = [new House(), new House(), new House(), new House(), new House()]; 
function addHouseHolds(number, names, houseIndexes){ 
    for(var i = 0; i < number; i++){ 
     household = new Household(names[i],houses[ houseIndexes[i] ]); 
     houseHoldArray.push(household); 
    } 
} 
在HTML