2016-07-08 4 views
1

私は割り当てのこの部分に問題があります。ほとんどのコードはコード化されていますが、この最後の部分の実装に問題があります。オブジェクト出力を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]); 
} 

問題は、それが無限に何度も何度も同じオブジェクトを出力しています。どうして私はそれを解決できますか?

+0

だから、正確に問題何で、どのようにあなたはそれを試してみて、解決するために行っていますか? –

+0

私は、各パトロンの名前、チェックアウトした書籍、罰金を表示するには出力が必要ですが、正しく動作するようにはできませんでした。 – dungo

+0

あなたが授業で学んだことに基づいて、どのように出力するのですか? 'console.log'? 'document.write'?おそらく、要素をクエリし、その内容を更新するでしょう。出力は複数の形式で出力され、出力先はあなたとあなたの先生の表示方法によって異なります。 –

答えて

2

私はあなたのコードを微調整し、出力を生成する方法を示しています。それはの割り当て問題のように私は完全にそれを解決するつもりはありません。予想される出力を得るためにそれを変更してください。もっと問題がある場合は教えてください。

//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); 
 
}

関連する問題