数据结构与算法JavaScript描述[第二章](数组)

来源:互联网 发布:安卓免费源码分享网站 编辑:程序博客网 时间:2024/05/16 15:12

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());


1 0