数据结构算法Javascript描述 第二章 练习

这篇博客展示了JavaScript编程中的对象和数组操作技巧。包括创建记录学生成绩的对象,实现添加成绩和显示平均成绩的功能;数组中的单词排序;设计一个存储温度数据的二维数组对象,具备显示月平均、周平均和所有周平均温度的方法;以及创建一个存储字母并能显示为单词的对象。这些实例涵盖了基础的数据结构和操作方法。
摘要由CSDN通过智能技术生成

看书练习记录,真的是个菜鸡,稍微复杂一点就没有思路,慢慢进步。

// 1. 创建一个记录学生成绩的对象,提供一个添加成绩的方法,
//    以及一个显示学生平均成绩的方法。

// 失误: 
//       1.没有使用 toFixed(num)方法,即把数字转换成字符
//         串,结果的小数点后有指定位数的数字
function sGrade() {
    this.grade = [];
    this.add = add;
    this.average = average;  
}
    function add(gra) {
        this.grade.push(gra);
    }
    
    function average() {
        var i= 0;
        for (var j=0; j<this.grade.length; j++) {
            i +=this.grade[j];
        }
        return (i/this.grade.length).toFixed(2);
    }

var studentGrade = new sGrade();
studentGrade.add(100);
console.log(studentGrade.average());


// 2. 将一组单词存储在一个数组中,并按正序和倒序
//    分别显示这些单词。
var words = arr['one', 'two', 'three', 'four', 'five'];
function display(str) {
   console.log(str.reverse());
   console.log(str.sort());
}
console.log(display(words));
// 3. 修改本章前面出现过的 weeklyTemps 对象,使它可以
//    使用一个二维数组来存储每月的有用数据。增加一些方法用以
//    显示月平均数、具体某一周平均数和所有周的平均数。
/*
  思路
  1. 每月的有用数据  每月四个周七天 四个数组 每组七个初始值
  2. 月平均数的方法 average
  3. 每周的,所有周的 平均数
 */
function weekTemps() {
    this.dataStore = [];
    this.init= init;//初始化数组
    this.add = add;
    this.monthAverage = monthAverage;
    this.monthAverage = monthAverage;
    this.dayAverage = dayAverage;
}
    function init() {
        var data = [];
        for (var i=0; i<4;i++) {
            var week = [];
            for (var j=0; j<7; j++) {
            week[j] = 0;
            }
            data[i] = week;
        }
        this.dataStore = data;
    }
    function add(week, day,temp) { //添加信息
        let w=week-1;
        let d=day-1; //let声明避免内存泄漏
        this.dataStore[w][d] = temp;
    }
    function monthAverage() {
        var total = 0;
        var sum = 0;//月数
        for (var i = 0; i < this.dataStore.length; ++i) {
            for (let j = 0; j < this.dataStore[i].length; ++j) {
               total += this.dataStore[i][j]; 
               sum++;
            }
        }
        return total / sum;
    }

    function weekAverage() { // 所有周平均数
        var total = 0;
        for (var i = 0; i < this.dataStore.length; ++i) {
            for (let j = 0; j < this.dataStore[i].length; ++j) {
                total += this.dataStore[i][j];
            }
        }
        return total / this.dataStore.length;
    }
    function dayAverage(week) { // 一周平均数
        var total = 0;
        for (var i = 0; i < this.dataStore[week].length; ++i) {
            total += this.dataStore[week][i];
        }
        return total / this.dataStore[week].length;
    }
    var thisWeek = new weekTemps(1,2,23);
    thisWeek.init();
    thisWeek.add();
    print(thisWeek.dataStore);
    
// 4. 创建这样一个对象,它将字母存储在一个数组中,并且用
//    一个方法可以将字母连在一起,显示成一个单词。
function display() {
    this.words = ['a', 'b', 'c', 'd', 'e', 'f']; 
    this.toShow = toDisplay();
}
function toDisplay() {
    return this.words.join('');
}
var obj = new display();
console.log(obj.toShow);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值