ES6 带来了许多新的数据结构和方法,其中 Map 和 Set 就是其中的两个非常有用的数据结构,本文将深入讲解这两个数据结构的特点、用法以及常见的应用场景。
Map 数据结构
Map 结构类似于对象,其特点是将键值对映射到任何类型的值上。它的键值可以是任何类型,比如字符串、数字、布尔值、对象等等,甚至可以将函数作为键值。Map 结构提供了以下方法:
set(key, value)
:设置键值对get(key)
:获取指定键的值has(key)
:判断指定键是否存在delete(key)
:删除指定键的值clear()
:清空 Map
Map 非常适用于缓存数据、数据筛选等场景,下面是一个例子:
-- -------------------- ---- ------- ----- --------- - --- ----- -------- ------------------- - -- ----------------------- - --------------------- ------ --------------------- - ---- - --------------- ----- ----- -------- - - -- -- --- ------ -- - --------------------- --------- ------ -------- - - ---------------- -- -- --- ---------------- -- ------
Set 数据结构
Set 数据结构类似于数组,但是它的值是唯一的,不会存在两个相同的值。Set 数据结构提供了以下方法:
add(value)
:添加元素delete(value)
:删除元素has(value)
:判断是否存在某个元素clear()
:清空 Setsize
:获取 Set 的长度
Set 常用于数组去重、数据筛选等场景,下面是一个例子:
const arr = [1, 2, 3, 3, 4, 5] const uniqueArr = new Set(arr) console.log(uniqueArr) // Set {1, 2, 3, 4, 5}
应用场景
Map 和 Set 可以解决很多常见的问题,例如:
- 统计数组中每个元素出现的次数:
const arr = [1, 2, 3, 3, 4, 5, 5, 5] const countMap = new Map() arr.forEach(item => { countMap.set(item, countMap.has(item) ? countMap.get(item) + 1 : 1) }) console.log(countMap) // Map { 1 => 1, 2 => 1, 3 => 2, 4 => 1, 5 => 3 }
- 将数组中的元素去重:
const arr = [1, 2, 3, 3, 4, 5, 5, 5] const uniqueSet = new Set(arr) const uniqueArr = Array.from(uniqueSet) console.log(uniqueArr) // [1, 2, 3, 4, 5]
- 缓存函数调用结果:
-- -------------------- ---- ------- ----- ----- - --- ----- -------- -------------------------- ------- - ----- --- - --------------------- -- ---------------- - --------------------- ------ -------------- - ---- - ---------------------- ----- ------ - -- ------- -- -------------- ------- ------ ------ - - ----------------------- ---- -- ------- ----------------------- ---- -- ------
总结
本文深入介绍了 ES6 中的 Map 和 Set 数据结构,并分别讲解了它们的用法、方法及常见的应用场景。通过了解 Map 和 Set 的特点以及优势,可以更好地应用这些数据结构来解决实际问题,提高编程效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f7e0f3f6b2d6eab3012584