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