75 lines
2.0 KiB
JavaScript
75 lines
2.0 KiB
JavaScript
const reviewer = {
|
||
name: "林晨",
|
||
stage: "final-review",
|
||
showTitle() {
|
||
console.log(`学习营总复盘器`);
|
||
// 输出总复盘标题
|
||
},
|
||
};
|
||
|
||
const lessons = [
|
||
{ title: "变量", score: 80, finished: true },
|
||
{ title: "闭包", score: 92, finished: true },
|
||
{ title: "this", score: 87, finished: true },
|
||
{ title: "补漏练习", score: null, finished: false },
|
||
{ title: "综合回顾", score: 95, finished: true },
|
||
];
|
||
|
||
let mentorNote;//undefined
|
||
const reviewComment = null;//null
|
||
|
||
function getStageText(stage) {
|
||
// 用 switch 返回阶段说明
|
||
switch (stage) {
|
||
case 'final-review':
|
||
console.log('已学习');
|
||
break
|
||
case 'ing-review':
|
||
console.log('学习中');
|
||
break
|
||
case 'start-review':
|
||
console.log('未学习');
|
||
break
|
||
default:
|
||
console.log('状态未知');
|
||
break
|
||
}
|
||
}
|
||
reviewer.showTitle()
|
||
|
||
console.log(mentorNote, reviewComment);
|
||
|
||
const lessons1 = []
|
||
for (let i = 0; i < lessons.length; i++) {
|
||
if (lessons[i].score != null) {
|
||
lessons1.push(lessons[i])
|
||
}
|
||
}
|
||
|
||
const sum = lessons.reduce((acc, item) => {
|
||
return acc + item.score
|
||
}, 0)
|
||
console.log("总分:" + sum);
|
||
console.log(`平均分:${sum / lessons.length}`);
|
||
|
||
|
||
const reviewerAlias = reviewer
|
||
reviewerAlias.stage = 'ing-review'
|
||
console.log(reviewer.stage, reviewerAlias.stage);
|
||
|
||
// 任务:
|
||
// 1. 调用 reviewer.showTitle()
|
||
// 2. 输出 mentorNote 和 reviewComment 的区别
|
||
// 3. 用 for + break 提取 lessons 中 score 有效的项目
|
||
// 4. 用高阶函数统计课程标题、完成状态和平均分
|
||
// 5. 创建 reviewerAlias 指向 reviewer,修改 stage,观察原对象是否变化
|
||
// 6. 输出最终结果
|
||
/* 一个带方法的 `reviewer` 对象
|
||
- 一个 `lessons` 数组
|
||
- 一个用 `switch` 输出阶段说明的函数
|
||
- 一个用 `for + break` 清洗有效数据的过程
|
||
- 至少两个数组高阶函数
|
||
- 对 `undefined` 和 `null` 的判断
|
||
- 一段对象引用变化的观察代码
|
||
- 最终输出标题、有效课程、平均分、完成状态*/
|