Set 数据类型
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用
Set 对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set 中的元素只会出现一次,即 Set 中的元素是唯一的
Set 中判断两个值是否相等的算法不同于 ===
,在 Set 内部,两个 NaN 是相等
let a = [NaN, NaN, undefined, undefined, +0, -0, {}, {}] |
属性
Set.length 为 0
Set.prototype.size 返回 Set 对象值得个数
操作方法
Set.prototype.add(value) // 在尾部添加某个值,返回该 Set 本身 |
Set Array 互相转化
Array.from(mySet) // Set ==> Array |
使用 Set 实现并集(Union)、交集(Intersect)和差集(Difference)
let a = new Set([1, 2, 3]) |
Map
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值
Map 中 NaN 是与 NaN 相等的(虽然 NaN !== NaN),剩下所有其它的值是根据 === 运算符的结果判断是否相等
属性
Map.length // 0 |
方法
Map.prototype.clear() // 移除 Map 对象的所有键/值对 |
迭代 Map
for (var [key, value] of myMap) { |
Map 和数组的关系
var kvArray = [['key1', 'value1'], ['key2', 'value2']] |
合并两个 Map 对象时,如果有重复的键值,则后面的会覆盖前面的
// 展开运算符本质上是将Map对象转换成数组 |
WeakMap
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakMap
WeakMap 对象是一组键/值对的集合,其中的键是弱引用的。其键必须是对象,而值可以是任意的
正由于这样的弱引用,WeakMap 的 key 是不可枚举的,即无法遍历
WeakMap 没有size属性
没有clear()方法
symbol
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol