在 JavaScript 中显示对象输出
Display Object Output in Javascript
我在作业的这一部分遇到了麻烦。我已经编写了大部分代码,但是在实现最后一部分时遇到了麻烦:
编写一个循环,模拟 3 个月的签出和签入。每天都在迭代目录,以及顾客阵列中的每个人。如果顾客当前已签出该书,请签入。如果未签出,则通过读者阅读方法将其添加到读者书籍列表中。如果这本书过期了,那么对归还它的顾客处以 5.00 美元的罚款。在 3 个月期限结束时,显示每位顾客、他们目前借出的书籍以及他们可能被罚款的任何款项。
这是我到目前为止的代码:
//Author class
var Author = function(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
};
var Book = function(title, Available, publicationDate, checkoutDate, callNumber, Authors) {
this.title = title;
this.Available = Available;
this.publicationDate = publicationDate;
this.checkoutDate = checkoutDate;
this.callNumber = callNumber;
this.Authors = Authors;
};
Book.prototype.checkOut = function() {
this.Available = false;
var temp = new Date(1000000000);
var d = new Date() - temp;
var res = new Date(d);
this.checkoutDate = res;
};
Book.prototype.isOverdue = function() {
//Get 1 day in milliseconds
var singleDay = 1000 * 60 * 60 * 24;
var todayDate = new Date().getTime();
var difference = todayDate - this.checkoutDate.getTime();
if (Math.round(difference / singleDay) >= 14) {
return true;
}
return false;
};
var Patron = function(firstName, lastName, libraryCardNumber, booksOut, fine) {
this.firstName = firstName;
this.lastName = lastName;
this.libraryCardNumber = libraryCardNumber;
this.booksOut = booksOut;
this.fine = fine;
};
Patron.prototype.read = function(book) {
this.booksOut.add(book);
}
Patron.prototype.read = function(book) {
this.booksOut.remove(this.booksOut.length);
}
//creating author objects
var authors = []
authors[0] = new Author("Neil", "Armstrong");
authors[1] = new Author("Hard", "Popeye");
var mybooks = []
mybooks[0] = new Book('gravity', true, new Date(2000, 5, 20), new Date(), 10, authors);
mybooks[1] = new Book('munro', true, new Date(2000, 5, 20), new Date(), 11, authors);
mybooks[2] = new Book('kohli', true, new Date(2000, 5, 20), new Date(), 12, authors);
mybooks[3] = new Book('sachin', true, new Date(2000, 5, 20), new Date(), 13, authors);
mybooks[4] = new Book('sehwag', true, new Date(2000, 5, 20), new Date(), 14, authors);
var patrons = []
patrons[0] = new Patron('master', 'jumbo', 1, mybooks, 0.00);
patrons[1] = new Patron('kyle', 'munro', 1, mybooks, 0.00);
patrons[2] = new Patron('master', 'jumbo2', 1, mybooks, 0.00);
patrons[3] = new Patron('master', 'jumbo3', 1, mybooks, 0.00);
patrons[4] = new Patron('master', 'jumbo4', 1, mybooks, 0.00);
var j = 0;
while (j < patrons.length) {
var books = patrons[j].booksOut;
var fine = patrons[j].fine;
for (var i = 0; i < books.length; i++) {
if (books[i].isOverdue()) {
fine = fine + 5.00;
}
}
patrons[j].fine = fine;
console.log(patrons[0]);
}
问题是它一遍又一遍地无限输出相同的对象。为什么会发生这种情况,我该如何解决?
我已经调整了您的代码并向您展示了一种生成输出的方法。由于这是一个作业问题,我无意完全解决它。修改它以获得预期的输出。如果您还有其他问题,请告诉我们。
//Author class
var Author = function(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
};
var Book = function(title, Available, publicationDate, checkoutDate, callNumber, Authors) {
this.title = title;
this.Available = Available;
this.publicationDate = publicationDate;
this.checkoutDate = checkoutDate;
this.callNumber = callNumber;
this.Authors = Authors;
};
Book.prototype.checkOut = function(){
this.Available = false;
var temp = new Date(1000000000);
var d = new Date()-temp;
var res = new Date(d);
this.checkoutDate = res;
};
Book.prototype.isOverdue = function(){
//Get 1 day in milliseconds
var singleDay=1000*60*60*24;
var todayDate = new Date().getTime();
var difference = todayDate - this.checkoutDate.getTime();
if(Math.round(difference/singleDay) >= 14){
return true;
}
return false;
};
var Patron = function(firstName, lastName, libraryCardNumber, booksOut, fine) {
this.firstName = firstName;
this.lastName = lastName;
this.libraryCardNumber = libraryCardNumber;
this.booksOut = booksOut;
this.fine = fine;
};
Patron.prototype.read = function(book){
this.booksOut.add(book);
}
Patron.prototype.read = function(book){
this.booksOut.remove(this.booksOut.length);
}
//creating author objects
var authors = []
authors[0] = new Author("Neil","Armstrong");
authors[1] = new Author("Hard","Popeye");
var mybooks = []
mybooks[0] = new Book('gravity',true,new Date(2000,5,20), new Date(), 10,authors);
mybooks[1] = new Book('munro',true,new Date(2000,5,20), new Date(), 11,authors);
mybooks[2] = new Book('kohli',true,new Date(2000,5,20), new Date(), 12,authors);
mybooks[3] = new Book('sachin',true,new Date(2000,5,20), new Date(), 13,authors);
mybooks[4] = new Book('sehwag',true,new Date(2000,5,20), new Date(), 14,authors);
var patrons = []
patrons[0] = new Patron('master','jumbo',1,mybooks,0.00);
patrons[1] = new Patron('kyle','munro',1,mybooks,0.00);
patrons[2] = new Patron('master','jumbo2',1,mybooks,0.00);
patrons[3] = new Patron('master','jumbo3',1,mybooks,0.00);
patrons[4] = new Patron('master','jumbo4',1,mybooks,0.00);
var j=0;
while(j < patrons.length){
var books = patrons[j].booksOut;
var fine = patrons[j].fine;
for(var i=0;i<books.length;i++){
if(books[i].isOverdue()){
fine = fine + 5.00;
}
}
patrons[j].fine = fine;
j++;
}
for(i=0; i < patrons.length;i++){
console.log(patrons[i].firstName+" has taken the following books:");
for(j=0;j<patrons[i].booksOut.length;j++){
console.log(patrons[i].booksOut[j].title);
}
console.log(patrons[i].firstName+" has fine = "+patrons[i].fine);
}
相关文章:
- 如何使用构造函数's的输出,以便将值插入到对象中
- JavaScript-从对象数组中输出随机OBJECT
- 如何为输出Json对象的ajax调用编写客户端脚本
- EJS 仅输出对象的某些部分
- 如何使用 JQuQuery 解析 JSON 对象并在 HTML 页面中以表格格式打印输出
- PhantomJS 控制台.log对象输出 [对象对象]
- Javascript 对象输出到 Array
- 在模板中为Django表单分离媒体类对象的JS和CSS列表输出
- 如何使用getJSON将数据从JSON对象输出为HTML
- c#linq对象到javascript输出
- 在用于电子表格的Javascript中输出对象中的数组
- 从 Express 发送的对象输出到 Jade 的适当值
- Angularjs,从json对象输出一个字符串或一个字符串数组
- 将我的对象输出为css结构
- Chrome Javascript控制台-使用Console.log(obj)引用对象输出
- 附加文本元素后的对象输出
- 如何格式化对象输出
- 如何从PHP对象输出单行JavaScript
- 在 JavaScript 中显示对象输出
- 我如何从对象输出中删除函数