JavaScript数据结构与算法-数组练习
一. 创建一个记录学生成绩的对象,提供一个添加成绩的方法,以及一个显示学生平均成绩的方法。
// 创建一个记录学生成绩的对象
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数据结构与算法-数组练习的更多相关文章
- 为什么我要放弃javaScript数据结构与算法(第二章)—— 数组
第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...
- 重读《学习JavaScript数据结构与算法-第三版》- 第3章 数组(一)
定场诗 大将生来胆气豪,腰横秋水雁翎刀. 风吹鼍鼓山河动,电闪旌旗日月高. 天上麒麟原有种,穴中蝼蚁岂能逃. 太平待诏归来日,朕与先生解战袍. 此处应该有掌声... 前言 读<学习JavaScr ...
- JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)
前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度. 我们应该多掌握一些可移值的技术或者再过十几年应该都不会过时的技术,数据结构与算法就是其中之一. 栈.队列.链表.堆 是数据结构与算法中的基 ...
- javascript数据结构与算法--高级排序算法
javascript数据结构与算法--高级排序算法 高级排序算法是处理大型数据集的最高效排序算法,它是处理的数据集可以达到上百万个元素,而不仅仅是几百个或者几千个.现在我们来学习下2种高级排序算法-- ...
- javascript数据结构与算法--散列
一:javascript数据结构与算法--散列 一:什么是哈希表? 哈希表也叫散列表,是根据关键码值(key,value)而直接进行访问的数据结构,它是通过键码值映射到表中一个位置来访问记录的,散列 ...
- javascript数据结构与算法---队列
javascript数据结构与算法---队列 队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素.队列用于存储按顺序排列的数据,先进先出,这点和栈不一样(后入先出).在栈中,最后入栈的元素 ...
- javascript数据结构与算法---栈
javascript数据结构与算法---栈 在上一遍博客介绍了下列表,列表是最简单的一种结构,但是如果要处理一些比较复杂的结构,列表显得太简陋了,所以我们需要某种和列表类似但是更复杂的数据结构---栈 ...
- javascript数据结构与算法---列表
javascript数据结构与算法---列表 前言:在日常生活中,人们经常要使用列表,比如我们有时候要去购物时,为了购物时东西要买全,我们可以在去之前,列下要买的东西,这就要用的列表了,或者我们小时候 ...
- 前端开发周报: CSS 布局方式方式与JavaScript数据结构和算法
前端开发周报:CSS 布局方式与JavaScript动画库 1.常见 CSS 布局方式详见: 一些常见的 CSS 布局方式梳理,涉及 Flex 布局.Grid 布局.圣杯布局.双飞翼布局等.http: ...
随机推荐
- 使用python-nmap 搭建基本端口扫描器
代码地址如下:http://www.demodashi.com/demo/13255.html 一.前言 注意: 本文相关教程仅供个人学习使用,切勿用于非法用途,否则造成的相关损失及影响,作者不承担任 ...
- iOS 自定义转场动画
代码地址如下:http://www.demodashi.com/demo/12955.html 一.总效果 本文记录分享下自定义转场动画的实现方法,具体到动画效果:新浪微博图集浏览转场效果.手势过渡动 ...
- filebeat 选项
Filebeat Options input_type: log|stdin 指定输入类型 paths 支持基本的正则,所有golang glob都支持,支持/var/log/*/*.log enco ...
- ORM进阶之Hibernate 的三大对象
ORM进阶之 ORM简单介绍 ORM进阶之Hibernate 简单介绍及框架搭 ORM进阶之Hibernate 的三大对象 我们在上一篇博客中讲到了怎样搭建一个Hibernate框架, 提到Hiber ...
- Linux LVM逻辑卷配置过程详解(创建、扩展、缩减、删除、卸载、快照创建)(未完)
转:http://blog.csdn.net/xuanfeng407/article/details/51465472
- HDU5374 Tetris (2015年多校比赛第7场)大模拟
思路: 先写好了几个函数.旋转,四种操作,推断能否够进行合并消除 题中有好几处要考虑的细节问题,如 自然下落究竟部时不进行合并的推断,而是当自然下落非法时才推断 假设消除一行,这一行上面的所以方块仅仅 ...
- C++语言基础(12)-虚函数
一.虚函数使用的注意事项 1.只需要在虚函数的声明处加上 virtual 关键字,函数定义处可以加也可以不加. 2.为了方便,你可以只将基类中的函数声明为虚函数,这样所有子类中具有遮蔽(覆盖)关系的同 ...
- TCP/IP的三次握手与四次挥手详解
TCP((Transmission Control Protocol)传输控制协议,是一个面向连接的协议.在运用此协议进行数据传输前都会进行连接的建立工作(三次握手):当数据传输完毕,连接的双方都会通 ...
- sigpending
信号的阻塞:通过sigprocmask()将信号集sigset_t中的信号设置为阻塞.SIG_BLOCK是指对相应信号的“递送阻塞”,内核在递送一个原来被阻塞的信号给进程时(而不是在产生该信号时),才 ...
- Python内置函数之isinstance()
isinstance(object,classinfo)用来判断对象是否为某种数据类型. 例子: >>> isinstance(,object) True >>> ...