Почему аргументы isSingle
и household
, кажется, не переходят к соответствующим свойствам объекта Person при их создании и подталкивая их к kidsArr
в конце сценария внутри switch
в то время как экземпляры созданный ранее в скрипте и нажатый на s20to24Arr
, похоже, правильно обрабатывает аргументы? Что мне не хватает?Javascript конструктор объекта не зарегистрирует аргумент
startPop = 1000
var getRandom = function(min, max) {
return Math.random() * (max - min) + min;
};
var lastNames = ['SMITH', 'JOHNSON', 'WILLIAMS', 'JONES', 'BROWN', 'DAVIS', 'MILLER'];
var firstNamesMale = ["Michael", "Christopher", "Jason", "David", "James", "John"];
var firstNamesFemale = ["Jennifer", "Amy", "Melissa", "Michelle", "Kimberly"];
var sex = ["Male", "Female"];
var genSex = function() {
var index = Math.round(getRandom(0, sex.length - 1));
return sex[index];
};
var genLastName = function() {
var index = Math.round(getRandom(0, lastNames.length - 1));
return lastNames[index];
};
var genFirstNameMale = function() {
var index = Math.round(getRandom(0, firstNamesMale.length - 1));
return firstNamesMale[index];
};
var genFirstNameFemale = function() {
var index = Math.round(getRandom(0, firstNamesFemale.length - 1));
return firstNamesFemale[index];
};
var s20to24Arr = [];
var householdArray = [];
var kidsArr = [];
var sing20to24 = Math.round(startPop * 0.088 * 0.8385);
var Person = function(sex, age, isSingle, lastName, household) {
if (sex === undefined) {
this.sex = genSex();
} else {
this.sex = sex;
}
if (lastName === undefined) {
this.lastName = genLastName();
} else {
this.lastName = lastName;
}
this.firstName = this.sex === "Male" ? genFirstNameMale() : genFirstNameFemale();
if (age === undefined) {
this.age = genAgeAdult();
} else {
this.age = age;
}
//this.income = 0;
//this.isEmployed = true;
//this.isRetired = false;
this.isSingle = isSingle;
this.household = household;
};
var Household = function(man, woman) {
this.man = man;
this.woman = woman;
//this.house = undefined;
this.kid1 = undefined;
this.kid2 = undefined;
this.kid3 = undefined;
//this.income : this.man.income + this.woman.income;
//this.expenses : 0;
//this.savings : 0;
//this.debts : 0;
//this.isHomeOwner : true;
};
var numKids = function(isSingle) {
var num = getRandom(0, 100);
if (!isSingle) {
if (num <= 47.73) {
return 0;
} else if (num <= 68.22) {
return 1;
} else if (num <= 90.46) {
return 2;
} else {
return 3;
}
} else {
if (num <= 82.31) {
return 0;
} else if (num <= 93.04) {
return 1;
} else if (num <= 98.11) {
return 2;
} else {
return 3;
}
}
};
//This creates instances of the Person object with lastName, firstName, sex, age, isSingle and household properties. It also creates an instance of the Household object.
for (var i = 0; i < sing20to24; i += 2) {
s20to24Arr.push(new Person("Male", Math.round(getRandom(20, 24)), true));
s20to24Arr.push(new Person("Female", Math.round(getRandom(20, 24)), true));
var curMale = s20to24Arr[i],
curFem = s20to24Arr[i + 1];
householdArray.push(new Household(curMale));
var index = householdArray.length > 0 ? householdArray.length - 1 : 0;
curMale.household = householdArray[index];
householdArray.push(new Household(undefined, curFem));
curFem.household = householdArray[index + 1];
var kids = numKids(true);
switch (kids) {
case 0:
break;
case 1:
kidsArr.push(new Person(undefined, Math.round(getRandom(0, 5), true, curFem.lastName,
curFem.household)));
var ind = kidsArr.lenght - 1;
curFem.household.kid1 = kidsArr[ind];
break;
case 2:
kidsArr.push(new Person(undefined, Math.round(getRandom(0, 5), true, curFem.lastName,
curFem.household)));
kidsArr.push(new Person(undefined, Math.round(getRandom(0, 5), true, curFem.lastName,
curFem.household)));
var ind = kidsArr.lenght - 1;
curFem.household.kid1 = kidsArr[ind - 1];
curFem.household.kid2 = kidsArr[ind];
break;
case 3:
kidsArr.push(new Person(undefined, Math.round(getRandom(0, 5), true, curFem.lastName,
curFem.household)));
kidsArr.push(new Person(undefined, Math.round(getRandom(0, 5), true, curFem.lastName,
curFem.household)));
kidsArr.push(new Person(undefined, Math.round(getRandom(0, 5), true, curFem.lastName,
curFem.household)));
var ind = kidsArr.lenght - 1;
curFem.household.kid1 = kidsArr[ind - 2];
curFem.household.kid2 = kidsArr[ind - 1];
curFem.household.kid3 = kidsArr[ind];
break;
}
}
console.log(s20to24Arr[0]);
console.log(kidsArr[0]);