JavaScript Set 与 Map

✏️ Editable
Loading...
Live Preview
+Enter Run+R Reset

About This Exercise

Set 适合“只保留唯一值”,天然去重。

Map 适合“键值查询表”,比普通对象更明确。

这一关会带你做 3 个常见任务:统计唯一数、字典查询、去重后排序输出。

Beginner⏱ 20-25 min

Learning Objectives

  • 掌握 Set 的去重思路与 size 用法
  • 掌握 Map 的 get 查询与默认值兜底
  • 能把 Set 转数组后继续做排序/拼接

Scenario

你在做课程标签与语言包功能: 一批标签有重复,需要统计唯一项;语言映射需要按 key 快速查值。

Why Do This

  • Frontend JS is not just about knowing the syntax — the key is reliably manipulating the DOM and managing interaction state.
  • Break down the event flow (trigger -> handle -> update UI) before coding, and you will make significantly fewer errors.
  • Rule-based validation helps you develop a testable frontend mindset.

Hands-on Practice

  • Write out the event flow in comments first, then implement the functions.
  • Add an edge case branch for invalid input or empty data.
  • Explain why each validation rule is needed.

Common Mistakes

  • Only testing the happy path without verifying edge inputs or repeated clicks.
  • Mixing event binding and state updates together, making future maintenance difficult.
  • Console output looks correct but the UI is not actually updated.

Deliverable

A reusable interaction component scaffold (event flow description + key functions + edge case handling).

My Progress

Completed Steps0 / 3
Total Attempts0
Best Score0%

Completion Criteria (Checkable)

Confirm before completing this Lab

Reflection Questions (Recommended)

Describe the event flow of this Lab in 2-3 sentences (trigger -> handle -> update).

What edge case did you add? Why is it easy to miss?

How confident are you with this interaction pattern now?

Tags

JavaScriptES6SetMap
Progress 0/39
0%
Learning Path Guide
Complete exercises from top to bottom. Start from #01 and finish the current stage before moving on.
Current stage goal: Build reusable data processing skills with objects and arrays
Stage 1 - Syntax Foundation0/10
From variables and functions to ES6 template syntax, build a solid foundation
01
JavaScript 变量与数据类型
Beginner
02
JavaScript let/const 作用域
Beginner
03
JavaScript 运算符
Beginner
04
JavaScript 条件语句
Beginner
05
JavaScript 循环
Beginner
06
JavaScript 函数
Beginner
07
JavaScript 箭头函数
Beginner
08
JavaScript 默认参数
Beginner
09
JavaScript 模板字符串
Beginner
10
JavaScript 解构赋值
Beginner
Stage 2 - Modern Syntax0/10
Master common ES6+ patterns to improve code expressiveness
11
JavaScript 展开与剩余参数
Intermediate
12
JavaScript 对象字面量增强
Beginner
13
JavaScript Class 基础
Intermediate
14
JavaScript 迭代器与生成器
Intermediate
15
JavaScript 防抖与节流
Intermediate
16
JavaScript 模块模式
Intermediate
17
JavaScript 发布订阅模式
Intermediate
18
JavaScript 状态机模式
Intermediate
19
JavaScript 记忆化缓存
Intermediate
20
JavaScript 不可变数据更新
Beginner
Stage 3 - Data Processing0/12
Build reusable data processing skills with objects and arrays
21
JavaScript ES7 特性
Beginner
22
JavaScript includes 方法
Beginner
23
JavaScript 指数运算符
Beginner
24
JavaScript ES8 对象工具
Intermediate
25
JavaScript 字符串补位
Beginner
26
JavaScript Async/Await 模式
Intermediate
27
JavaScript 字符串方法
Beginner
28
JavaScript 数组
Beginner
29
JavaScript 对象
Beginner
30
JavaScript 数组高阶方法
Beginner
31
JavaScript Set 与 Map
Beginner
32
JavaScript 实用算法函数
Intermediate
Stage 4 - DOM Interaction0/2
Apply syntax to real page interaction scenarios
33
JavaScript DOM 操作基础
Beginner
34
JavaScript 事件处理
Beginner
Stage 5 - Async & Robustness0/5
Complete the Promise/async and error handling loop
35
JavaScript 异步编程
Beginner
36
JavaScript Promise 并发
Intermediate
37
JavaScript 异步循环模式
Intermediate
38
JavaScript 可选链与空值合并
Beginner
39
JavaScript 错误处理
Beginner