set
类似数组,但成员值都是唯一的,不能重复
创建
new Set()
1
2
3
4const s = new Set()
const s1 = new Set([1, 2, 3, 3, 4]) // 可接受数组,可用于去重
for (let i of s) {}添加 add(val)
delete(val)
has(val) // return boolean
size // num
clear() // 清空,没有返回值
遍历 set.keys() | set.values() | forEach | map | filter
并集交集和差集
1
2
3
4
5
6
7
8
9
10
11
12
13
14let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
// 并集
let union = new Set([...a, ...b]);
// Set {1, 2, 3, 4}
// 交集
let intersect = new Set([...a].filter(x => b.has(x)));
// set {2, 3}
// 差集
let difference = new Set([...a].filter(x => !b.has(x)));
// Set {1}weakSet
WeakSet 的成员只能是对象,而不能是其他类型的值。
WeakSet 中的对象都是弱引用,垃圾回收不会考虑,当外部没有引用时,会自动消失
WeakSet 不能遍历add | delete | has
map
哈希结构,Object 提供
"字符串: 值"
,Map 提供"值: 值"
get | set | delete | has
1
2
3
4
5
6
7
8
9const m = new Map();
const o = {p: 'Hello World'};
m.set(o, 'content')
m.get(o) // "content"
m.has(o) // true
m.delete(o) // true
m.has(o) // false与其他数据结构的转换
- map 转数组:
...
扩展运算符 - 数组转 map: 传入 map 构造函数(new Map(array))
weakMap
WeakMap 只接受对象作为键名
WeakMap 的键名所指向的对象,不计入垃圾回收机制
- get()、set()、has()、delete()