-3

ホテル管理

有名なホテルがマイアミに 3 つの支店を持っています。つまり、x、y、z(実際には彼らが名前を付けました)。それぞれに2種類の顧客がいます。レギュラーとリワード。また、各ブランチには独自の評価があり、x には 3 つ星の評価が与えられ、y には 5 つ星の評価があり、z には 4 つ星の評価があります。

各ホテルには、週末と平日の特定の料金があります。x は通常の顧客に平日 100 ドル、週末に 120 ドルを請求しますが、報酬は平日に 90 ドル、週末に 60 ドルです。同様に、y は通常の顧客に対して平日は 130 ドル、週末は 150 ドルを請求します。平日は 100 ドル、週末は 95 ドルです。z は通常の顧客に対して平日は 195 ドル、週末は 150 ドルを請求します。平日は 120 ドル、週末は 90 ドルです。顧客が特定の詳細を要求した場合、どのホテルが顧客に利益をもたらすかを見つける必要があります。ホテル間で同点の場合は、評価を比較して結果を提供します。

入力形式:

通常:2010年3月16日(日)、2010年3月19日(水)、2010年3月21日(金)

このコードを作成しました...正しい方向に進んでいるかどうか教えてください。また、ホテルの価格を動的にするにはどうすればよいですか

getTheday = function(aText,typeofcustomer)
    {

        this.typeofcustomer = typeofcustomer;
        myDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
        if(new Date(aText).getDay() == 0 || new Date(aText).getDay() == 5 || new Date(aText).getDay() == 6)
        {
            console.log("its weekend!!!");
            this.weekend(this.typeofcustomer);
        }

        console.log("it is ", myDays[new Date(aText).getDay()]);

    }

    getTheday.prototype.weekend = function(typeofcustomer)
    {
        console.log(typeofcustomer);
        this.hoteloptionsforweekend();
    }

    getTheday.prototype.hoteloptionsforweekend = function()
    {

        if(this.typeofcustomer == "rewardee")
        {
            this.hotelpricex_ = 60;
            this.hotelpricey_ = 95;
            this.hotelpricez_ = 90;
            this.minhotelprice = Math.min(this.hotelpricex_, this.hotelpricey_, this.hotelpricez_)

            console.log("min price is of hotel", this.minhotelprice);

        }

        if(this.typeofcustomer == "regular")
        {
            this.hotelpricex_ = 120;
            this.hotelpricey_ = 150;
            this.hotelpricez_ = 150;

        }

    }
4

1 に答える 1

1
// Put your price listings outside of the constructor
// so that you could fetch them from somewhere else
// later
var hotelPrices = [
        {
            name:    'Hotel X',
            daily:   { regular: 120, rewardee: 60 },
            weekend: { regular: 140, rewardee: 70 }
        },
        {
            name:    'Hotel Y',
            daily:   { regular: 150, rewardee: 95 },
            weekend: { regular: 180, rewardee: 110 }
        },
        {
            name:    'Hotel Z',
            daily:   { regular: 150, rewardee: 90 },
            weekend: { regular: 180, rewardee: 110 }
        }
    ];

// Be consistent and use correct camelCase for naming.
// And, btw, `getTheDay` name is misleading and confusing.
getTheDay = function( aText, typeOfCustomer, prices ) {
    var day = ( new Date( aText ) ).getDay();

    this.typeOfCustomer = typeOfCustomer;
    this.prices = prices;

    // isWeekend is a Boolean, indicating whether the date passed
    // is a weekend. 
    this.isWeekend = day == 0 || day == 5 || day == 6;
};

getTheDay.prototype.getMinimumPrice = function() {
    var prices = [],
        i, len;

    for( i = 0, len = this.prices.length; i < len; i += 1 ) {
        // Taking the appropriate price from the price list
        // and moving it to the new list
        prices.push( this.prices[i][ this.isWeekend ? 'weekend' : 'daily' ][ this.typeOfCustomer ] )
    }

    // A small trick to feed Math.min an array
    // instead of a list of arguments
    return Math.min.apply( Math, prices );
};

// Example usage:
var hotelRates = new getTheDay( aText, typeOfCustomer, hotelPrices );
console.log( hotelRates.getMinimumPrice() );

今、あなたのホームタスクは、最も安いホテルの名前を返すメソッドを作成することです。JavaScript初心者向けの優れた一連の記事がDailyJSで公開されています:JS 101

于 2012-06-28T19:46:13.313 に答える