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

// 创建一个记录学生成绩的对象
const Students = function Students () {
this.grades = [];
this.addGrage = addGrade;
this.getAverage = getAverage;
};
// 提供一个添加成绩的方法
function addGrade (grade) {
this.grades.push(grade);
}
// 以及一个显示学生平均成绩的方法
function getAverage () {
let total = 0;
let len = this.grades.length;
while (len--) {
total += parseInt(this.grades[len], 10);
}
return total / this.grades.length;
}
// 示例
let Mazey = new Students();
Mazey.addGrage(90);
Mazey.addGrage(91);
Mazey.addGrage(87);
Mazey.addGrage(99);
Mazey.addGrage(89);
Mazey.addGrage(85);
Mazey.addGrage(92);
console.log(Mazey.getAverage());

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

// 将一组单词存储在一个数组中
let arr = [`Mazey`, `Cherrie`, `John`, `Ada`, `Chole`];
// 正序
console.log(arr.sort());
// 倒序
console.log(arr.sort().reverse());

三. 创建一个对象,使用一个二维数组来存储每月的有用数据,增加一些方法用以显示月平均数,具体某一周平均数和所有周的平均数。

const MonthData = function MonthData () {
// 初始化月数据
this.monthData = (function () {
let arr = [];
let week = 4;
let day = 7;
while (week--) {
arr[week] = [];
while (day--) {
arr[week][day] = 0;
}
day = 7;
}
console.log(arr);
return arr;
})();
this.addData = addData;
this.getMonthAverage = getMonthAverage;
this.getWeekAverage = getWeekAverage;
this.getAllWeekAverage = getAllWeekAverage;
};
function addData (week, day, data) {
this.monthData[week][day] = data;
}
function getMonthAverage () {
let arr = this.monthData,
total = 0,
day = 0;
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
total += parseInt(arr[i][j], 10);
day++;
}
}
return total / day;
}
function getWeekAverage (week) {
let arr = this.monthData[week],
total = 0;
for (let i = 0; i < arr.length; i++) {
total += parseInt(arr[i], 10);
}
return total / arr.length;
}
function getAllWeekAverage () {
let self = this,
week = this.monthData.length,
total = (function () {
let total = 0;
for (let i = 0; i < week; i++) {
total += self.getWeekAverage(i) * self.monthData[i].length
}
return total;
})();
return total / week;
}
// 示例
let Mazey = new MonthData();
Mazey.addData(0, 1, 100);
Mazey.addData(0, 2, 100);
Mazey.addData(0, 3, 100);
Mazey.addData(0, 4, 100);
Mazey.addData(1, 6, 7);
console.log(Mazey.getMonthAverage());
console.log(Mazey.getWeekAverage(0));
console.log(Mazey.getWeekAverage(1));
console.log(Mazey.getAllWeekAverage());

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

const Letter = function Letter () {
this.characters = [];
this.addCharacter = addCharacter;
this.toLetter = toLetter;
};
function addCharacter (character) {
this.characters.push(character);
}
function toLetter () {
return this.characters.join(``);
}
// 示例
let Mazey = new Letter();
Mazey.addCharacter(`m`);
Mazey.addCharacter(`a`);
Mazey.addCharacter(`z`);
Mazey.addCharacter(`e`);
Mazey.addCharacter(`y`);
console.log(Mazey.toLetter()); // mazey

JavaScript数据结构与算法-数组练习

最新文章

  1. 【转】async &amp; await 的前世今生
  2. animation_Frame动画图片轮播
  3. 与你相遇好幸运,使用gulp流程化Typescript后端开发
  4. Openfire 的安装和配置
  5. canvas 画六边形
  6. C# 值类型和引用类型的区别
  7. IE6解决固定定位代码
  8. 查看Linux声卡基本信息[转载]
  9. There is No Alternative~最小生成树变形
  10. solr中Cache综述
  11. 一文读懂SpringCloud与Eureka,Feign,Ribbon,Hystrix,Zuul核心组件间的关系
  12. 【深入Java虚拟机】之一:Java内存模型
  13. Python:Fintech产品的第一语言
  14. SQL2008 一直error40 无法连接到localhost
  15. WPF 录屏软件研发心得及思路分享(已结束开发)
  16. WordPress 之 在注册界面 实现 注册后密码直接显示在页面上
  17. Use Multiple log4net Outputs from One Application
  18. Solidity字符串类型
  19. Python——signal
  20. mongo 内存限制wiredTigerCacheSizeGB = 10

热门文章

  1. POJ1088 动态规划
  2. Java基础知识介绍
  3. Atitit.研发管理---api版本号策略与版本控制
  4. atitit.跨语言执行cmd&#160;cli&#160;api的原理及兼容性设计草案
  5. Scrapy系列教程(3)------Spider(爬虫核心,定义链接关系和网页信息抽取)
  6. __attribute__系列之cleanup
  7. python模块学习之collections
  8. vimrc之fileformat
  9. CentOS统的7个运行级别的含义
  10. 挑战:万能的slash! 判断js中“/”是正则、除号、注释?