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

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


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值