JavaScript --- 数组练习题

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

function  Warehouse() {
			this.formData = [];  // 学生成绩库
			this.add = add;  // 添加方法
			this.average = average; // 计算平均值
		}
		function add(arr) {
			this.formData.push(arr)
		}
		function average() {
			var total = 0;
			var averages = 0.0;
			var datas = []
			
			for (var i = 0; i < this.formData.length; ++i) {
				
				if(Array.isArray(this.formData[i])){ // 判断是否是数组
					for (var col = 0; col < this.formData[i].length; ++col) {
						total += this.formData[i][col];
					}
				}else{
					
					total = this.formData[i];
				}
				if(this.formData[i].length){
					averages = total / this.formData[i].length;
				}else{
					averages = total
				}
				
				
				datas.push(averages.toFixed(2))
				total = 0;
				averages = 0.0;
			}
			
			return datas
		}
		var thisWeek = new Warehouse();
		thisWeek.add(52);
		thisWeek.add([660,660,660,660]);
		thisWeek.add(61);
		thisWeek.add(65);
		thisWeek.add(55);
		thisWeek.add(50);
		thisWeek.add(52);
		thisWeek.add(49);
		console.log(thisWeek.average()); // 显示 ["52.00", "660.00", "61.00", "65.00", "55.00", "50.00", "52.00", "49.00"]

我把每次添加都看成是添加一个学生的所有成绩

 

2 将一组单词存储在一个数组中, 并按正序和倒序分别显示这些单词

 这个就是用sort() 先正序排列 然后再用reverse()进行倒序

var names = ["David","Mike","Cynthia","Clayton","Bryan","Raymond"];
names.sort();
 names.reverse();
 console.log(names);

 

3 修改本章前面出现过的 weeklyTemps 对象, 使它可以使用一个二维数组来存储每月的有用数据。 增加一些方法用以显示月平均数、 具体某一周平均数和所有周的平均数。

       


/***
 //二维数组来存储每月的有 用数据
//创建一个用以显示月平均数的方法
// 一周平均数
//所有周的平均数

*/
/**
 * 思路
 * 第一步 每月的有用数据 那么就是 每月四个周 初始化四个数组每组七个初始值
 * 第二步 月平均数的方法 average
 * 每周的
 * 所有周的 平均数
 */
function weekTemps() {
    this.dataStore = [];
    this.init = init;
    this.add = add;
    this.monthAverage = monthAverage;
    this.weekAverage = weekAverage;
    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) {  // 需要添加第几周 第几天 减一是对应数组的长度 可以输入 add(4,6,6767)  //第四周的第六天 插入6767
    let w = week - 1;
    let d = day - 1
    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();
thisWeek.init()
print(thisWeek.dataStore)

thisWeek.add(2, 3, 45)
thisWeek.add(2, 4, 60)
thisWeek.add(1, 3, 5)
print(thisWeek.dataStore)
print(thisWeek.monthAverage().toFixed(2))
print(thisWeek.weekAverage().toFixed(2))
print(thisWeek.dayAverage(2).toFixed(2))



4 创建这样一个对象, 它将字母存储在一个数组中, 并且用一个方法可以将字母连在一
起, 显示成一个单词。

function Str(){
	this.words = ["a", "p", "p", "l","e"];
	this.toStr = toStr;
}
function toStr(){
	return this.words.join('');
}
var obj = new Str();
console.log(obj.toStr());


 

你可能感兴趣的:(算法基础学习笔记,javascript)