データ構造とアルゴリズムJavaScript記述[第二章](配列)

4409 ワード

1.学生の成績を記録する対象を作成し、成績を追加する方法と学生の平均成績を表示する方法を提供する.
var Grade = function () {
        var _this = this;

        //    
        _this.gradeStore = [];

        //    
        _this.add = function (name,score) {
            if(name && score){
                _this.gradeStore.push({
                    name:name,
                    score:score
                });
            }else{
                throw '         ';
            }
        }
        //      
        _this.showAverage = function () {
            var sum = 0;
            for(var index in _this.gradeStore){
                sum += _this.gradeStore[index]['score'];
            }
            return sum / (parseInt(index) + 1);
        }
    }

    var grade = new Grade();
    grade.add('a',30); //  a   30
    grade.add('b',40);	
    grade.add('c',20);
    console.log(grade.showAverage()); //         
2.単語のセットを一つの配列に保存し、順と順にそれぞれこれらの単語を表示します.
    //             
    var SortWord = function () {
        var _this = this;

        _this.wordStore = ['zhang','apple','panel','pen','dong','qing'];

        var strategy = {
            //  
            asc:function () {
                _this.wordStore.sort();
            },
            //  
            desc:function () {
                _this.wordStore.sort(function (a,b) {
                    return b > a;
                });
            }
        };

        _this.sort = function (rule) {
            strategy[rule]();
            return _this.wordStore;
        }
    }
    console.log(new SortWord().sort('asc'));
3.この章の前に現れたweeklyTempsオブジェクトを修正し、毎月の有用なデータを記憶するために二次元配列を使用できるようにします.いくつかの方法を増やして月の平均数を表示します.具体的には、一週間の平均数と全週の平均数です.
    //  
    var Temp = {
        //    
        monthTempStore:[],
        //     
        weekTempStore:[],
        add:function (by,key,temp) {
            var strategy = {
                month:function (month) {
                    Temp.monthTempStore[month] = Temp.monthTempStore[month] || new Array();
                    Temp.monthTempStore[month].push(temp);
                },
                week:function (week) {
                    Temp.weekTempStore[week] = Temp.weekTempStore[week] || new Array();
                    Temp.weekTempStore[week].push(temp);
                }
            };
            strategy[by](key);
        },
        average:function (by,key) {
            var sum = 0;
            var i = 0;
            var strategy = {
                month:function () {
                    for(;i < Temp.monthTempStore[key].length; i++){
                        sum += Temp.monthTempStore[key][i];
                    }
                    return sum / i;
                },
                week:function () {
                    for(;i < Temp.weekTempStore[key].length; i++){
                        sum += Temp.weekTempStore[key][i];
                    }
                    return sum / i;
                },
                allWeek:function () {
                    var index = 0;
                    for(;i < Temp.weekTempStore.length; i++){
                        if(Temp.weekTempStore[i]){
                            for(var j = 0 ; j < Temp.weekTempStore[i].length; j++){
                                sum += Temp.weekTempStore[i][j];
                                ++index;
                            }
                        }
                    }
                    return sum / index;
                }
            };
            return strategy[by]();
        }

    };
//             
    Temp.add('month',1,20);
    Temp.add('month',1,30);
    Temp.add('month',1,30);
    //1       =>     
    console.log(Temp.average('month',1));
    Temp.add('week',1,30);
    Temp.add('week',1,40);
    Temp.add('week',2,40);
    // 1       =>       
    console.log(Temp.average('week',1));
    //      
    console.log(Temp.average('allWeek'));
4.アルファベットを一つの配列に格納し、一つの方法でアルファベットをつなげて単語として表示するオブジェクトを作成します.
var Word = {
        letters:['p','p','a','p'],
        getWord:function () {
            return this.letters.join('');
        }
    };
    console.log(Word.getWord());