Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环不';不能正确执行功能操作_Javascript - Fatal编程技术网

Javascript 循环不';不能正确执行功能操作

Javascript 循环不';不能正确执行功能操作,javascript,Javascript,我正在尝试让嵌套循环执行签入/签出模拟。我设置了我的函数,并在最后循环,但它总是以某种方式给我相同的输出。每个顾客都有相同数量的书和巨额罚款,而不是像结账和isOverdue功能那样完全随机分配 如何使循环使用从函数中随机生成的日期,并为每位用户提供不同数量的罚款和不同的出借书籍 我的代码: var Book=function(标题、可用、发布日期、签出日期、呼叫号码、作者){ this.title=标题; 这个.Available=Available; this.publicationDat

我正在尝试让嵌套循环执行签入/签出模拟。我设置了我的函数,并在最后循环,但它总是以某种方式给我相同的输出。每个顾客都有相同数量的书和巨额罚款,而不是像结账和isOverdue功能那样完全随机分配

如何使循环使用从函数中随机生成的日期,并为每位用户提供不同数量的罚款和不同的出借书籍

我的代码:

var Book=function(标题、可用、发布日期、签出日期、呼叫号码、作者){
this.title=标题;
这个.Available=Available;
this.publicationDate=publicationDate;
this.checkoutDate=checkoutDate;
this.callNumber=callNumber;
这个。作者=作者;
};
var Author=函数(firstName,lastName){
this.firstName=firstName;
this.lastName=lastName;
};
var Patron=函数(firstName、lastName、libCardNum、booksOut、fine){
this.firstName=firstName;
this.lastName=lastName;
this.libCardNum=libCardNum;
this.booksOut=booksOut;
this.fine=fine;
};
函数randInRange(开始、结束){
返回Math.floor(Math.random()*(end-start+1))+start;
}
Book.prototype.checkOut=函数(){
这个.Available=false;
var dateChk=新日期();
var randDay=randInRange(1,25);
dateChk.setDate(dateChk.getDate()-randDay);
this.checkoutDate=dateChk;
};
Book.prototype.checkIn=函数(){
这个.Available=true;
};
Book.prototype.isOverdue=函数(){
var单日=1000*60*60*24;
var todayDate=new Date().getTime();
var difference=todayDate-this.checkoutDate.getTime();
if(数学四舍五入(差分/单日)>=14){
返回true;
}
返回false;
};
Patron.prototype.read=功能(书籍){
this.booksOut.add(book);
}
customer.prototype.return=函数(书本){
this.booksOut.remove(this.booksOut.length);
}
var=[];
作者[0]=新作者(“Auth”,“One”);
作者[1]=新作者(“AutL”,“2”);
var目录=[];
目录[0]=新书('Bk1',正确,新日期(2001年1月21日),新日期(),123456,作者);
目录[1]=新书('Bk2',正确,新日期(2002年2月22日),新日期(),987656,作者);
目录[2]=新书('Bk3',正确,新日期(2003年3月23日),新日期(),092673,作者);
目录[3]=新书('Bk4',正确,新日期(2004年4月24日),新日期(),658342,作者);
目录[4]=新书('Bk5',正确,新日期(2005年5月25日),新日期(),345678,作者);
var用户=[];
用户[0]=新用户(“Pat1”、“Wat”、1、目录,0.00);
赞助人[1]=新赞助人('Pat2','Wot',1,目录,0.00);
用户[2]=新用户('Pat3','Wit',1,目录,0.00);
顾客[3]=新顾客('Pat4','Wet',1,目录,0.00);
赞助人[4]=新赞助人('Pat5','Wut',1,目录,0.00);
//while循环或for循环90天
//用于循环目录
//forloop over用户
//检查是否可用,如果可用,请检查图书
//如果不可用,请将登记簿签回
//检查一下,看看这本书是否过期了,如果过期了,加上罚款
//当向下循环时,用户可以查看他们的费用
对于(变量i=0;i<90;i++){
对于(var j=0;j}
我必须对您的示例进行一些更改,以使其真正起作用

需要知道的一件非常重要的事情是,当调用对象的方法时,必须在调用后面加括号:不是
catalog[j]。签出
而是
catalog[j]。签出()

您现在可以检查我的更改以及脚本的工作方式。有了这个,你可以制定后续问题

希望这有帮助

var Book=function(标题、可用、发布日期、签出日期、呼叫号码、作者){
this.title=标题;
这个.Available=Available;
this.publicationDate=publicationDate;
this.checkoutDate=checkoutDate;
this.callNumber=callNumber;
这个。作者=作者;
};
var Author=函数(firstName,lastName){
this.firstName=firstName;
this.lastName=lastName;
};
var Patron=函数(firstName、lastName、libCardNum、booksOut、fine){
this.firstName=firstName;
this.lastName=lastName;
this.libCardNum=libCardNum;
this.booksOut=booksOut;
this.fine=fine;
};
函数randInRange(开始、结束){
返回Math.floor(Math.random()*(end-start+1))+start;
}
Book.prototype.checkOut=函数(){
这个.Available=false;
var dateChk=新日期();
var randDay=randInRange(1,25);
dateChk.setDate(dateChk.getDate()-randDay);
this.checkoutDate=dateChk;
};
Book.prototype.checkIn=函数(){
for (var i = 0; i < 90; i++) {
  _.shuffle(books).forEach(function(book) {
    _.shuffle(patrons).forEach(function(patron) {
      if (patron.hasBookCheckedOut(book)) {
        return patron.return(book);
      }

      if (book.available) {
        patron.read(book);
      }     
    });
  });
};