数据结构与算法@数组练习题

概述

数据结构数组相关练习题。

详述

练习一

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Grades {
constructor() {
this.dataStore = [];
}
add(gradeNum) {
if (typeof gradeNum !== "number") {
return;
}
this.dataStore.push(gradeNum);
}
average() {
if (this.dataStore.length === 0) {
return;
}
let totoal = this.dataStore.reduce((pre, cur) => {
return pre + cur;
});
return (totoal / this.dataStore.length).toFixed(2);
}
}

let grades = new Grades();
grades.add(80);
grades.add(90);
grades.add(110);
console.log(grades.average()); // 93.33

练习二

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

1
2
3
4
5
6
7
8
let arr = ["baidu", "ali", "tengxun", "jingdong"];
let str = arr.sort().join(",");
let str2 = arr
.sort()
.reverse()
.join(",");
console.log(str); // ali,baidu,jingdong,tengxun
console.log(str2); // tengxun,jingdong,baidu,ali

练习三

用一个二维数组存储每月的有用数据,增加一些方法显示月平均数,某一周平均数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class MonthlyTemps {
constructor() {
this.dataStore = [];
}
add(weekIndex, temp) {
if (!this.dataStore[weekIndex]) {
this.dataStore.push([]);
}
this.dataStore[weekIndex].push(temp);
}
average(weekIndex) {
let total = 0,
count = 0;
if (typeof weekIndex !== "undefined") {
count = this.dataStore[weekIndex].length;
total = this.dataStore[weekIndex].reduce((pre, cur) => {
return pre + cur;
});
return (total / count).toFixed(2);
} else {
this.dataStore.forEach(ele => {
if (!Array.isArray(ele)) {
return;
}
count += ele.length;
let weekTotal = ele.reduce((pre, cur) => {
return pre + cur;
});
total += weekTotal;
});
}
return (total / count).toFixed(2);
}
}

let monthlyTemps = new MonthlyTemps();
monthlyTemps.add(0, 52);
monthlyTemps.add(0, 55);
monthlyTemps.add(0, 61);
monthlyTemps.add(0, 65);
monthlyTemps.add(0, 50);
monthlyTemps.add(0, 57);
monthlyTemps.add(0, 59);

monthlyTemps.add(1, 54);
monthlyTemps.add(1, 55);
monthlyTemps.add(1, 61);
monthlyTemps.add(1, 65);
monthlyTemps.add(1, 50);
monthlyTemps.add(1, 57);
monthlyTemps.add(1, 59);

console.log(monthlyTemps.average(0)); // 57.00
console.log(monthlyTemps.average()); // 57.14

练习四

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class MyLetters {
constructor() {
this.dataStore = [];
}
add(letter) {
this.dataStore.push(letter);
}
word() {
return this.dataStore.join("");
}
}

let myLetters = new MyLetters();
myLetters.add("h");
myLetters.add("i");
let myword = myLetters.word();
console.log(myword); // hi

参考

《数据结构与算法 JavaScript 描述》