一、 集合 Set
概念:Set 是一种无序唯一的数据结构,常用来做去重、判断某元素是否在集合中、求交集
特点:由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以 keys 方法和 values 方法的行为完全一致
const mySet = new Set(['a', 'a', 'b'])
console.log(mySet) // {'a', 'b'}
// add(value) 添加某个值,返回 Set 结构本身(可以链式调用)
myset.add('c')
console.log(mySet) // {'a','b','c'}
// size属性 获取集合内容的个数(长度)
console.log(mySet.size) // 3
// has(value) 返回一个布尔值,表示该值是否为Set的成员
mySet.has('a') // true
// clear() 清除所有成员,没有返回值
二、字典 Map
概念:Map 与集合类似,字典也是一种存储唯一值的数据结构,但是它是以键值对的形式来存储的,常用来做键值对的增删改查
Map 和 Object 的区别:Object 的键只能是字符串或者 Symbols,但Map 的键可以是任意值;Map的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算
const m1 = new Map([['a', 1], ['b', 2]])
console.log(m1) // {"a" => 1, "b" => 2}
// set(key, val) 向Map中添加新元素
m1.set('c', 3)
console.log(m1) // {"a" => 1, "b" => 2, "c"=>3}
// get(key) 通过键值查找特定的数值并返回
console.log(m1.get('c')) //3
// has(key) 判断Map对象中是否有Key所对应的值,有返回true,否则返回false
console.log(m1.get('c')) //true
// delete(key) 通过键值从Map中移除对应的数据
m1.delete('c')
console.log(m1) // {"a" => 1, "b" => 2}
// clear() 将这个Map中的所有元素删除