0
var books = new Array();

books[0] = "Silmarillion: ";
books[1] = "Horus Rising: ";
books[2] = "Lord of the Rings: ";


var ratings = new Array();

ratings[0] = "9 ";
ratings[1] = "8 ";
ratings[2] = "7 ";


function printBooks()
{
    for(var i = 0; i < books.length; i++)
    {
    document.writeln(books[i] +" " + ratings[i]);
    }

}


printBooks();

私はこのコードを持っていて、それは(基本的に)私がやりたいことを達成しますが、それはかなり悪いです。1 つの関数 (addBooks(title, rating)) で書籍を追加し、1 つの関数 (printBooks()) で書籍を印刷します。ユーザーに 1 冊の本を追加してもらい、その評価を尋ねてもらい、これを 3 回行ってもらいたいと思います。この後、印刷したいと思います。

私はそれをやろうとしましたが、配列に追加する関数を書く方法がわかりません。push() を使用する必要があることがわかりましたが、それ以上は使用しないでください..十分に明確であることを願っています。

編集

これに加えて、追加された本の平均スコアを計算する方法も必要です。このために今得たコードは次のとおりです。

function averageRating ()
{
var sum = 0;
for(var u = 0; u < ratings.length; u++)
{
    sum += parseInt(ratings[u]);
}
var avg = sum/ratings.length;
document.writeln("<br>Number of books read: " + ratings.length + "<br>The average rating of the books are: " + avg);

averageRating();
4

1 に答える 1

5

コンセプトは、あなたがいくつかの本を持つ図書館を持っているということです。したがって、OOP アプローチは、何らかのメソッドを使用してクラス ライブラリを作成する場合があります。お気に入り:

function Library() {
    var books = [];
    this.addBook = function(bookName,rate) {
        books.push({name:bookName, rating:rate});
    }
    this.printBooks = function() {
        for(var i = 0; i < books.length; i++)  {
            document.writeln(books[i].name +": " + books[i].rating);
        }
    }
}

コード:

var myLibrary = new Library();
myLibrary.addBook('Silmarillion',9);
myLibrary.addBook('Horus Rising',8);
myLibrary.addBook('Lord of the Rings',7);

myLibrary.printBooks();

ただし、改善することはできます。クラスを作成できますBook

function Book(name,options) {
    this.name = name;
    this.rating = options.rating;
}

クラスライブラリは次のようになります。

function Library() {
    var books = [];
    this.addBook = function(book) {
        books.push(book);
    }
    this.printBooks = function() {
        for(var i = 0; i < books.length; i++)  {
            document.writeln(books[i].name +": " + books[i].rating);
        }
    }
    // EDIT: ADDED for new features required
    this.countBook = function() {
          return books.length;
    }
    this.calculateRatingAverage = function() {
         var sum = 0;
         for(var i = 0; i < books.length; i++) {
            sum += books[i].rating;
         }
        return sum/books.length;
     }
}

その使用法は次のようになります。

var myLibrary = new Library();
myLibrary.addBook(new Book('Silmarillion',{rating:9}));
myLibrary.addBook(new Book('Horus Rising',{rating:8}));
myLibrary.addBook(new Book('Lord of the Rings',{rating:7}));

myLibrary.printBooks();
document.writeln("<br>Number of books read: " + myLibrary.countBook() + "<br>The average rating of the books are: " + myLibrary.calculateRatingAverage());

したがって、最適化して作業できる強固な構造が得られます。

于 2013-01-04T22:44:22.527 に答える