包头市网站建设_网站建设公司_后端工程师_seo优化
2026/1/16 7:53:11 网站建设 项目流程

总结:算法题 JS 容器选择速查表

需求用什么
是否出现过Set
不同元素个数Set.size
频率统计Map
顺序访问Array / String
随机访问Array / String
去重Set
哈希查找Set / Map

JS 容器范式手册:Set、Map、字符串、数组

注意,区分 “值容器”和“结构容器


一、String(字符串)范式

字符串是只读的、类数组结构

let s = "abcde"; s.length // 5 s[0] // "a" s.charAt(0) // "a" // 算法遍历范式: for (let i = 0; i < s.length; i++) { let ch = s[i]; }

二、Array(数组)范式

数组是有序容器 + 有 length

let arr = [10, 20, 30]; arr.length // 3 arr[1] // 20 // 遍历范式: for (let i = 0; i < arr.length; i++) {} for (const x of arr) {} // 判重(慢): arr.includes(x) // O(n)

三、Set(去重集合)范式

Set = 无序、唯一元素集合

let set = new Set(); set.add("a") set.add("b") set.add("a") // 不会重复 set.size // 2

算法题标准用法

1️⃣ 统计不同元素
let set = new Set(); for (let x of arr) { set.add(x); } let distinct = set.size;
2️⃣ 判断是否存在

set.has(x)

3️⃣ 清空集合

set.clear()


四、Map(计数器 / 哈希表)范式

Map = key → value(非常适合频率统计)

let map = new Map();

1️⃣ 计数范式(高频)

for (let ch of s) { map.set(ch, (map.get(ch) || 0) + 1); }

2️⃣ 取值

map.get("a") // undefined 或 数字

3️⃣ 判断是否存在

map.has("a")

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询