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: ...
随机推荐
- 命名空间System.Configuration中不存在类型或命名空间名称ConfigurationManager
C#连接数据库时.这是个非经常见的错误,我刚開始就直接using System.Configuration;还是没能解决,真相是要手动加入这个程序集的引用,在项目右键加入引用选择System.Conf ...
- 深入研究mysql中group by与order by取分类最新时间内容
鉴于项目的需要,就从网上找到该文章,文章分析得很详细也很易懂,在android里,(不知道是不是现在水平的限制,总之我还没找到在用 ContentProvider时可以使用子查询),主要方法是用SQL ...
- Android 四大组件学习之BroadcastReceiver二
上节学习了怎样创建一个广播.也尝试接受系统打电话的广播. 本节课学习怎样自己定义广播.自己定义广播实质上也就是创建一个发送广播者,创建一个接受该广播者. 那我们就開始行动吧. 先创建一个发送广播的应用 ...
- iOS_绘制带删除线的Label
效果图例如以下: 一个带删除线的文本标签,继承自UILabel 自绘代码过程例如以下: 1,重写控件的drawRect方法 2,首先得到上下文对象 3,设置颜色,并指定是填充(Fill)模式还是笔刷( ...
- cpu分析简介
进程占用CPU过高,一般有以下两种原因: 1. 业务量过大导致进程处理负荷高,占用CPU资源:2. 程序BUG导致,比如死循环: 初步查看cpu占用情况top进一步 ...
- nginx源码学习_数据结构(ngx_str_t)
nginx中关于字符串的数据结构位于src/core/ngx_string.c和src/core/ngx_string.h中 先来看一下数据结构: typedef struct { size_t le ...
- 从零开始学习SSH框架笔记之四 几个关键配置文件备忘(模板)
不多说,直接上代码.关于注释我尽量写详细点. 1.web.xml <?xml version="1.0" encoding="UTF-8"?> &l ...
- SharePoint管理中心配置内容数据库
SharePoint管理中心配置内容数据库 在SharePoint2010中,内容数据库是组织数据的核心. 是全部站点内容信息,如文档.列表数据和Web部件属性等存储的地方.默认地,内 ...
- XCode 4.6下XIB文件提示“...could not be opened..."的问题
最近更新了Mac系统和XCode,当我把一个以前的项目用Xcode5打开以后,再用Xcode4.6打开时,选中XXXX.xib/storyboard文件,有的文件会弹出 "The docum ...
- Vim使用技巧(3) -- 可视化模式技巧 【持续更新】
快捷键 Esc / Ctrl + [ / v //切换到普通模式 o //切换高亮选区的光标活动端 y //将光标选中的内容复制到寄存器中 u //将光标选中的字母全部改成小写字母 U //将光标选中 ...