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

// 创建一个记录学生成绩的对象
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数据结构与算法-数组练习的更多相关文章

  1. 为什么我要放弃javaScript数据结构与算法(第二章)—— 数组

    第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...

  2. 重读《学习JavaScript数据结构与算法-第三版》- 第3章 数组(一)

    定场诗 大将生来胆气豪,腰横秋水雁翎刀. 风吹鼍鼓山河动,电闪旌旗日月高. 天上麒麟原有种,穴中蝼蚁岂能逃. 太平待诏归来日,朕与先生解战袍. 此处应该有掌声... 前言 读<学习JavaScr ...

  3. JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)

    前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度. 我们应该多掌握一些可移值的技术或者再过十几年应该都不会过时的技术,数据结构与算法就是其中之一. 栈.队列.链表.堆 是数据结构与算法中的基 ...

  4. javascript数据结构与算法--高级排序算法

    javascript数据结构与算法--高级排序算法 高级排序算法是处理大型数据集的最高效排序算法,它是处理的数据集可以达到上百万个元素,而不仅仅是几百个或者几千个.现在我们来学习下2种高级排序算法-- ...

  5. javascript数据结构与算法--散列

    一:javascript数据结构与算法--散列  一:什么是哈希表? 哈希表也叫散列表,是根据关键码值(key,value)而直接进行访问的数据结构,它是通过键码值映射到表中一个位置来访问记录的,散列 ...

  6. javascript数据结构与算法---队列

    javascript数据结构与算法---队列 队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素.队列用于存储按顺序排列的数据,先进先出,这点和栈不一样(后入先出).在栈中,最后入栈的元素 ...

  7. javascript数据结构与算法---栈

    javascript数据结构与算法---栈 在上一遍博客介绍了下列表,列表是最简单的一种结构,但是如果要处理一些比较复杂的结构,列表显得太简陋了,所以我们需要某种和列表类似但是更复杂的数据结构---栈 ...

  8. javascript数据结构与算法---列表

    javascript数据结构与算法---列表 前言:在日常生活中,人们经常要使用列表,比如我们有时候要去购物时,为了购物时东西要买全,我们可以在去之前,列下要买的东西,这就要用的列表了,或者我们小时候 ...

  9. 前端开发周报: CSS 布局方式方式与JavaScript数据结构和算法

    前端开发周报:CSS 布局方式与JavaScript动画库 1.常见 CSS 布局方式详见: 一些常见的 CSS 布局方式梳理,涉及 Flex 布局.Grid 布局.圣杯布局.双飞翼布局等.http: ...

随机推荐

  1. 《DirectX 9.0 3D游戏开发编程基础》必备的数学知识 读书笔记

    最近在看游戏导航源码,但是看了几天感觉看不懂.里面全是一些几何运算,以及一些关于3d方面的知识.发现自己缺少3d这方面的知识,正好也想研究一下3d游戏开发的基本原理,于是决定买本书看看了,后来在ope ...

  2. Lomboz插件的介绍 下载 安装 问题

    http://www.blogjava.net/javaandcc/articles/251334.html Lomboz是Eclipse的一个主要的开源插件(open-source plug-in) ...

  3. EPH接收Event Hub Message

    简介: 使用Python SDK,基于EPH方式接收Azure Event Hub中存储的message,EventProcessorHost()中使用Azure Storage存储offerset等 ...

  4. 【C#系列】你应该知道的委托和事件

    [C#系列]你应该知道的委托和事件   本篇文章更适合具有一定开发经验,一定功底,且对底层代码有所研究的朋友!!! 本篇文章主要采用理论和代码实例相结合方式来论述委托和事件,涉及到一些边界技术,如软件 ...

  5. H5网站模板——前台和后台

    以下是比较典型的前台或者后台的H5模板: html5优分期大学生分期购物商城模板链接:http://pan.baidu.com/s/1dEUAzBz 密码:j150 红色的五金电气商城网站模板链接:h ...

  6. Python3 range()函数

    Python3 range() 函数用法  Python3 内置函数 Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表. Pyth ...

  7. linux proc目录和常用操作

    ------------------------------------------------/proc----------------------------------------------- ...

  8. Atitit.php opcode虚拟机指令集 分类以及详细解释

    Atitit.php opcode虚拟机指令集 分类以及详细解释 1. 指令集常用分类:: Mov移动指令 算数逻辑移位指令 跳转指令 Oo指令 类型转换指令 2. 与jvm  clr指令集合对比 P ...

  9. ASP.net通过WebBrowser取得AJAX后的网页

    今天  Shih-Min 问我说,假设网页一开始是AJAX 会载入一些资料,但是透过WebClient 去抓 抓到都是JavaScript 跟 AJAX 的原始码,有办法可以抓到AJAX 取完值之后的 ...

  10. for zip

    private void zip(ZipOutputStream out, File file, String base) { try { if (file.isDirectory()) { File ...