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

// 创建一个记录学生成绩的对象
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. linux phpredisAdmin安装步骤

    1:linux安装apache环境, 这一步可以不用安装plsql http://www.cnblogs.com/lufangtao/archive/2012/12/30/2839679.html 2 ...

  2. 8.1.2 绑定Activity和Service

    8.1.2 绑定Activity和Service 2010-06-21 16:57 李宁 中国水利水电出版社 字号:T | T <Android/OPhone开发完全讲义>第8章Andro ...

  3. POJ 3278: Catch That Cow

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 44613   Accepted: 13946 ...

  4. Effective C++ 条款47

    本节条款的题目:请使用trait classes来表示类型信息 本节条款主要讲述的技术是怎样在编译期间实现对迭代器类型的推断,依据推断的类型进行最优处理. 我们先来看一下迭代器的种类: 1.input ...

  5. virtualenv下使用matplotlib

    Unable to “import matplotlib.pyplot as plt” in virtualenv   (PyMVPA) SimilarFacedeMacBook-Pro:PyMVPA ...

  6. codeblocks设置当前行高亮

    默认是不开启当前行高亮的. 如果想打开,选择:Settings>Editor>Editor Settings>Other options> 勾选Highlight line u ...

  7. libpcap丢包原理分析及Fedora 9 内核2.6.25.14下安装PF-RING的详细过程

    看到网上有人讲解fedora 9下安装PF-RING的过程,都是几年前的了,比较老了,我安装PF-RING就是为了使用libpcap库,libpcap的原理是通过socket 将数据包从网卡 捕获数据 ...

  8. inode表元数据,存储在物理存储体上

    一个文件除了数据需要存储之外,一些描述信息也需要存储,例如文件类型(常规.目录.符号链接等),权限,文件大小,创建/修改/访问时间等,也就是ls -l命令看到的那些信息,这些信息存在inode中而不是 ...

  9. IOS设计模式浅析之桥接模式(Bridge)

    引言 在项目开发中,我们会遇到这样的一种场景:某些类型由于自身的逻辑,往往具有两个或多个维度的变化,比如说大话设计模式书中所说的手机,它有两个变化的维度:一是手机的品牌,可能有三星.苹果等:二是手机上 ...

  10. hdu2068 RPG的错排 错排+组合

    RPG的错排 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...